前面的博客中没有具体地说一下过滤器,这里依旧以文件的读写举例。先直接上代码:
public static void main(String[] args) throws IOException {
File fileFrom = new File("e:/my.txt");
File fileTo = new File("e:/my001.txt");
// 读文件
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fileFrom), "gbk"));
// 写入
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileTo), "gbk"));
//while循环边读边写
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
//写入
bw.write(line);
bw.flush();
}
//写入
br.close();
bw.close();
}
注意了,这里的br有readLine的功能,可是bw是没有的,因此需要再while中改进代码,增加换行:
while ((line = br.readLine()) != null) {
System.out.println(line);
// 写入
bw.write(line);
bw.newLine();
bw.flush();
}
看bw.newLine();的api:
/**
* Writes a line separator. The line separator string is defined by the
* system property <tt>line.separator</tt>, and is not necessarily a single
* newline ('\n') character.
*
* @exception IOException If an I/O error occurs
*/
public void newLine() throws IOException {
write(lineSeparator);
}
中文:
newLine
public void newLine()
throws IOException写入一个行分隔符。行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。
抛出:
IOException - 如果发生 I/O 错误
自然就明白了。
这里改进代码:BufferedWriter换成PrinterWriter
File fileFrom = new File("e:/my.txt");
File fileTo = new File("e:/my001.txt");
// 读文件
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fileFrom), "gbk"));
// 写入
PrintWriter pw=new PrintWriter(fileTo) ;
// while循环边读边写
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
// 写入
pw.println(line);
pw.flush();
}
// 写入
br.close();
pw.close();
最后,再提取方法出来。如下:
private static void FileCopyTo(File fileFrom, File fileTo)
throws UnsupportedEncodingException, FileNotFoundException,
IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fileFrom), "gbk"));
// 写入
PrintWriter pw=new PrintWriter(fileTo) ;
// while循环边读边写
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
// 写入
pw.println(line);
pw.flush();
}ss
// 写入
br.close();
pw.close();
}