学习笔记048——Java字节流
文章目录
- IO 流
- 1、File 类
- 2、字节流
- 2.1、InputStream
- 2.2、OutputStream
IO 流
Input、Output
输入:将文件以数据流的形式读取到 Java 程序中,上传
输出:通过 Java 程序将数据流写到文件中,下载。
1、File 类
Java 程序是如何操作文件的?
java.io.File 类专门用来创建文件对象的,表示某个文件。
方法 | 描述 |
---|---|
public File(String path) | 根据路径创建文件对象 |
public String getName() | 获取文件名 |
public String getParent() | 获取文件所在的目录 |
public File getParentFile() | 获取文件所在的目录对应的 File 对象 |
public String getPath() | 获取文件路径 |
public boolean exists() | 判断文件对象是否存在 |
public boolean isDirectory() | 判断对象是否为目录 |
public boolean isFile() | 判断对象是否为文件 |
public long length() | 获取文件的大小(byte) |
pubilc boolean createNewFile() | 根据当前对象创建文件 |
public boolean delete() | 删除文件 |
public boolean mkdir() | 根据当前对象创建目录 |
public boolean renameTo(File file) | 为已存在的对象重命名 |
package com.southwind.test;
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
File file = new File("D:\\java\\test.txt");
if (file.exists()) {
System.out.println(file + "存在");
System.out.println("文件名:"+file.getName());
System.out.println("文件长度:" + file.length());
System.out.println("文件路径:" + file.getPath());
System.out.println("文件的parent:" + file.getParent());
System.out.println("文件的parentFile" + file.getParentFile());
File parentFile = file.getParentFile();
if(parentFile.isDirectory()){
System.out.println("parentFile是一个文件夹");
}
}
System.out.println("*********************************************");
File file1 = new File("D:\\java\\test2.txt");
File file2 = new File("D:\\java\\test3.txt");
System.out.println(file1.renameTo(file2));
System.out.println(file2.delete());
}
}
2、字节流
Java 中的流有很多种分类
按照方向,可以分为输入流和输出流。
按照单位,可以分为字节流和字符流。
按照功能,可以分为节点流和处理流。
字节流又可以按照方向分为输入字节流(InputStream)和输出字节流(OutputStream)
2.1、InputStream
方法 | 描述 |
---|---|
int read() | 以字节为单位读取数据 |
int read(byte b[]) | 将数据存入byte数组,返回数据长度 |
int read(byte b[],int off,int len) | 将数据存入byte数组的指定区间 |
byte[] readAllBytes() | 将数据转换成一个byte数组 |
int available() | 当前数据流中未读取的数据个数 |
void close() | 关闭数据流 |
package com.southwind.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class Test2 {
public static void main(String[] args) throws Exception {
//获取文件对象
File file = new File("D:\\java\\test.txt");
//获取输入流
InputStream inputStream = new FileInputStream(file);
for (int i = 0; i < file.length(); i++) {
int read = inputStream.read();
System.out.println(read);
}
System.out.println("***************************");
inputStream = new FileInputStream(file);
// System.out.println(inputStream.read());
// System.out.println(inputStream.read());
// System.out.println(inputStream.read());
int temp = 0;
while ((temp = inputStream.read()) != -1){
System.out.println("当前未读取的数据个数是:" + inputStream.available());
System.out.println(temp);
}
}
}
package com.southwind.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) throws Exception {
//获取文件对象
File file = new File("D:\\java\\test.txt");
//获取输入流
InputStream inputStream = new FileInputStream(file);
byte[] bytes = new byte[1024];
System.out.println(inputStream.read(bytes,10,5));
System.out.println(Arrays.toString(bytes));
}
}
package com.southwind.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) throws Exception {
//获取文件对象
File file = new File("D:\\java\\test.txt");
//获取输入流
InputStream inputStream = new FileInputStream(file);
byte[] bytes = inputStream.readAllBytes();
System.out.println(Arrays.toString(bytes));
}
}
2.2、OutputStream
方法 | 描述 |
---|---|
void write(int b) | 以字节为单位写数据 |
void write(byte b[]) | 将byte数组中的数据写出 |
void write(byte b[],int off,in len) | 将byte数组中指定区间的数据写出 |
void flush() | 强制将缓冲区的数据同步到输出流中 |
void close() | 关闭数据流 |
package com.southwind.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Test3 {
public static void main(String[] args) throws Exception {
//创建文件对象
File file = new File("D:\\java\\copy.txt");
if(file.exists()){
//创建输出流
OutputStream outputStream = new FileOutputStream(file);
//开始写数据
byte[] bytes = {12,16,33,72,90,100,108,109};
outputStream.write(bytes,3,3);
//关闭数据流
outputStream.close();
}else{
System.out.println("文件不存在");
}
}
}
文件复制
package com.southwind.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class Test4 {
public static void main(String[] args) throws Exception {
//文件复制
//java/test.txt 复制到 java2/test.txt
//InputStream
InputStream inputStream = new FileInputStream("D:\\java\\test.txt");
//OutputStream
OutputStream outputStream = new FileOutputStream("D:\\java2\\test.txt");
int temp = 0;
//读数据
while ((temp = inputStream.read())!=-1){
//写数据
outputStream.write(temp);
}
outputStream.close();
inputStream.close();
}
}