java IO流之FileReader FileWriter 处理文件 复制文件内容
java IO流之FileReader FileWriter处理文件 复制文件内容
分步实现
- 创建读写文件对象
//1.1有一个源文件
File f1 = new File("IOStream/src/testfile/test.txt");
//1.2有一个目标文件:
File f2 = new File("IOStream/src/testfile/demo.txt");
-
接“管”,创建FileReader,FileWriter流
//2.1搞一个输入的管 怼到源文件上: FileReader fr = new FileReader(f1); //2.2搞一个输出的管,怼到目标文件上: FileWriter fw = new FileWriter(f2);
-
文件内容操作
-
一个字符一个字符的复制
int n = fr.read(); while(n!=-1){ fw.write(n);//此处可修改成想要的输出 n = fr.read(); }
-
利用缓冲字符数组
char[] ch = new char[5]; int len = fr.read(ch); while(len!=-1){ fw.write(ch,0,len);//将缓冲数组中有效长度写出 len = fr.read(ch); }
-
将缓冲字符数组转为String
char[] ch = new char[5]; int len = fr.read(ch); while(len!=-1){ String s = new String(ch,0,len); fw.write(s);//此处可修改成想要的输出 len = fr.read(ch); }
-
-
关闭流:(关闭流的时候,倒着关闭,后用先关)
fw.close(); fr.close();
完整程序
搭配异常处理后的代码
public class RW {
public static void main(String[] args){
//1.1有一个源文件
File f1 = new File("IOStream/src/testfile/test.txt");
//1.2有一个目标文件:
File f2 = new File("IOStream/src/testfile/demo.txt");
//2.1搞输入的管和输出的管
FileReader fr = null;
FileWriter fw = null;
try {
//2.2.1将输入的管怼到源文件上
fr = new FileReader(f1);
//2.2.2将输出的管怼到目标文件上
fw = new FileWriter(f2);
//3利用缓冲字符数组,将数组转为String写出
char[] ch = new char[5];
int len = fr.read(ch);
while(len!=-1){
String s = new String(ch,0,len);
fw.write(s);
len = fr.read(ch);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4.关闭流:(关闭流的时候,倒着关闭,后用先关)
try {
assert fw != null;//防止空指针异常
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
assert fr != null;
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
也可已使用try-with-resource自动关闭资源
public class RWTC {
public static void main(String[] args){
//1.1有一个源文件
File f1 = new File("IOStream/src/testfile/test.txt");
//1.2有一个目标文件:
File f2 = new File("IOStream/src/testfile/demo.txt");
//2.1搞输入的管和输出的管,并分别接到源文件和目标文件上
try (
FileReader fr = new FileReader(f1);
FileWriter fw = new FileWriter(f2);
){
//3利用缓冲字符数组,将数组转为String写出
char[] ch = new char[5];
int len = fr.read(ch);
while(len!=-1){
String s = new String(ch,0,len);
fw.write(s + "\n");
len = fr.read(ch);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("找不到文件");
}catch (IOException e) {
e.printStackTrace();
}
}
}