一:FileReader和FileWriter文件复制范例:
(1)可见,FileReader和FileWriter的使用,和前面的字节流,其他字符流类的使用情况类似;
(2)这儿没有使用缓冲流;而以前在处理文档时,常用的readLine()方法是BufferedReader类的;
public class ReaderDemo2 {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("imooc.txt");
FileWriter fw = new FileWriter("imooc2.txt");
int n = 0;
char[] cbuf = new char[10];
while((n = fr.read(cbuf))!= -1){
fw.write(cbuf, 0, n);
}
fw.flush();
fr.close();
fw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
}
二:带缓冲的FileReader和FileWriter复制文件
(1)其中流的连接,其操作模式和其他情况类似
public static void main(String[] args) {
try {
FileReader fr = new FileReader("imooc.txt");
FileWriter fw = new FileWriter("imooc2.txt");
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
int n = 0;
char[] cbuf = new char[10];
while((n = br.read(cbuf))!= -1){
bw.write(cbuf, 0, n);
}
fw.flush();
fr.close();
fw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
}
三:ReadLine()方法的应用
readLine():该方法时BufferedReader类中的
public class ReaderDemo2 {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("imooc.txt");
FileWriter fw = new FileWriter("imooc2.txt");
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
String s;
while((s = br.readLine())!= null){
// 这儿可以添加各种对本行文档的处理程序
s = s+"hahaha";
bw.write(s);
bw.newLine(); // 这种换行方式,在不同的系统中不一样,会存在问题
}
bw.flush();
fr.close();
fw.close();
br.close();
bw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
}
四:换行符
不同的系统中,换行符是不同的:
●Windows:\r\n;
●Linux:\r;
●mac:\n
一般开发是在Windows环境下开发,而项目部署到Linux系统上;
而上面用到的newLine(),在在不同的系统上都会产生换行的效果,但实际对应的字符是不同的。由此会引发一些问题,在实际开发中,如若涉及可能由此引发的问题,需要解决一下。
本文介绍使用Java的FileReader和FileWriter进行文件复制的方法,包括不使用缓冲流的基本复制过程,使用BufferedReader和BufferedWriter增强效率的复制过程,以及如何利用readLine()方法逐行读取并处理文件内容。
918

被折叠的 条评论
为什么被折叠?



