关于使用IO流中的方法将A文件内容复制到B文件中
首先创建一个文件
// 创建新的文件
File file = new File("D:\\111Java高级\\demo\\asd1.txt");
boolean createNewFile = file.createNewFile();
System.out.println(createNewFile);
// 向文件里添加内容
FileWriter fw = new FileWriter("D:\\111Java高级\\demo\\asd1.txt");
fw.write("冥冥之中,该来则来,无处可逃");
fw.flush();
第一种方式:
使用字节流(InputStream)来操作文件的copy
// InputStream是抽象类所以用其子类FileInputStream来创建对象,当然也可以直接用子类来创建对象
InputStream in = new FileInputStream("D:\\111Java高级\\demo\\asd1.txt");
OutputStream out = new FileOutputStream("D:\\111Java高级\\demo\\asd2.txt");
// 定义一个len变量用来接收读取的字节
int len = 0;
// 创建一个字节数组,用来存取该字节流读取的字节数
byte[] buff = new byte[1024];
// 将字节数组参数传入read()方法中
while ((len = in.read(buff)) != -1) {
// write()方法传入的三个参数,参数一:字节数组 参数二:开始读取的位置 参数三:读取的长度
out.write(buff, 0, len);
out.flush();
// System.out.print(new String(buff, 0, len));
}
一个汉字为两个字节, 数字、英文字符为一个字节
第二种方式:
使用缓冲字节流(BufferedInputStream)来操作文件的copy
// 传的参数为对象(将缓冲指定文件的输入)
BufferedInputStream in = new BufferedInputStream(new FileInputStream(
"D:\\111Java高级\\demo\\asd1.txt"));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("D:\\111Java高级\\demo\\asd2.txt"));
// 定义一个len变量用来接收读取的字节
int len = 0;
// 创建一个字节数组,用来存取该字节流读取的字节数
byte[] buff = new byte[1024];
// 将字节数组参数传入read()方法中
while ((len = in.read(buff)) != -1) {
// write()方法传入的三个参数,参数一:字节数组 参数二:开始读取的位置 参数三:读取的长度
out.write(buff, 0, len);
out.flush();
// System.out.print(new String(buff, 0, len));
}
第三种方式:
使用字符流(Reader)来操作文件的copy
// Reader是抽象类所以用其子类FileReader来创建实例对象
Reader fre = new FileReader("D:\\111Java高级\\demo\\asd1.txt");
Writer fwr = new FileWriter("D:\\111Java高级\\demo\\asd2.txt");
// 定义一个int变量 接收读取的文本每一行的数据
int ch = 0;
// fre,read()读出来的为码值
while ((ch = fre.read()) != -1) {
// 将对应的码值转换为char字符
fwr.write(String.valueOf((char) ch));
fwr.flush();
}
第四种方式:
使用缓冲字符流(BufferedReade)来操作文件的copy
// 传的参数为对象(将缓冲指定文件的输入)
BufferedReader bin = new BufferedReader(new FileReader(
"D:\\111Java高级\\demo\\asd1.txt"));
BufferedWriter bout = new BufferedWriter(new FileWriter(
"D:\\111Java高级\\demo\\asd2.txt"));
// 定义一个字符串变量 接收读取的文本每一行的数据
String str = "";
// 遍历输入写出数据
while ((str = bin.readLine()) != null) {
bout.write(str);
bout.flush();
}
可以看出字节流和缓冲字节流写出方式一样,字符流和缓冲字符流的写出方式一样,而缓冲字节流和缓冲字符流的创建对象方式类似 readLine()方法是BufferedReader缓冲字符流特有的方法,读取一行数据,为字符串类型
一般使用字符缓冲字符流读(BufferedReader)写(BufferedWriter)要方便一些,他可以直接以字符串创的形式读写(ReadLine())当然这个是视情况而定的