I/O流
1、定义
数据在两个设备之间的传输称为流,流是一组有顺序的
2、使用
2.1、字节
字节输入流
- 新建File类对象
- 创建字节输入流
- 返回接下来从此输入流读取的字节数
- 循环输出
字节输出流
- 新建File类对象
- 输入要输出的内容
- 创建字节输出流
- 写入内容的字节组到输出流
2.2、字符
字符输入流
- 新建File类对象
- 创建字节输入流文件
- 对字节输入流进行编码
- 创建字符流对象
- 关闭所有资源
字符输出流
- 新建File类对象
- 创建字节输出流文件
- 设置编码并返回字符输出流
- 创建字符输出流
File类常用方法
package d1018IO;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class FileDemo {
public static void main(String[] args) {
File file = new File("C:\\Users\\19912\\Desktop\\不准删除.txt");
//1 判断文件是否存在
boolean has = file.exists();
//2判断是否是一个文件
// System.out.println(file.isFile());
//3判断是否是一个文件夹(目录)
// System.out.println(file.isDirectory());
//4获取当前目录下的所有文件
// String[] s = file.list();
// System.out.println(Arrays.toString(s));
//5获取当前目录下的所有文件对象
// File[] files = file.listFiles();
// System.out.println(Arrays.toString(files));
//6删除文件或者文件夹
// boolean tar = file.delete();
//7当文件存在时删除文件或者文件夹
// file.deleteOnExit();
//8创建文件夹
// boolean b = file.mkdir();
// System.out.println(b);
//9创建一个新文件
// try {
// file.createNewFile();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//10判断文件是否可读
System.out.println(file.canRead());
//11判断文件是否可写
System.out.println(file.canWrite());
}
}
复制大文件
package d1018IO;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class BigFile {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream(new File("C:\\Users\\19912\\Desktop\\新建文本文档.txt"));
OutputStream out = new FileOutputStream(new File("C:\\Users\\19912\\Desktop\\文本文档.txt"));
//获取字节输入流的长度
int size = in.available();
System.out.println(size);
for (int i = 0; i < size; i++) {
out.write(in.read());
}
//效率提高1024倍
// byte[] bt = new byte[1024];
// int len = in.read(bt);//每次读指定数组长度的字节数,并将读到的字节传入大数组中返回读到的字节长度
// while(len != -1) {
// out.write(bt);//将字节数组中的字节写入到输出流中
// len = in.read(bt);
// }
out.close();
in.close();
}
}