14.3.3 FileReader和FileWriter

  • Post author:
  • Post category:其他


如果想要存取的是一个文本文件,可以直接使用java.io.FileReader和java.io.FileWriter类,它们分别继承自InputStreamReader与OutputStreamWriter。可以直接指定文件名称或File对象来打开指定的文本文件,并读入流转换后的字符,字符的转换会根据系统默认的编码(若要指定编码,则还是使用InputStreamReader与OutputStreamWriter)。

FileReader和FileWriter的使用非常简单,下面举个例子。在Linux下编写的文本文件,其断行字符是/n,而在Windows下编写的文本文件其断行是/r与/n两个连续字符。如果在Windows下使用记事本打开一个Linux下编写的文本文件,其在显示上并不会有断行的效果,且/n字符会被用一个黑色方块来显示。

范例14.18是一个简单的程序,可以读入Linux下编写的文本文件,再写入另一个文件。在读取过程中若遇到/n字符,就取代为/r与/n两个连续字符,这样新的文件在Windows的记事本程序中,就可以有断行显示的效果。

范例14.18  FileReaderWriterDemo.java

package onlyfun.caterpillar;

import java.io.*;

public class FileReaderWriterDemo {
public static void main(String[] args) {
try { 
FileReader fileReader = 
new FileReader(args[0]); 
FileWriter fileWriter = 
new FileWriter(args[0] + ".txt"); 

int in = 0; 
char[] wlnChar = {'/r', '/n'}; 
while((in = fileReader.read()) != -1) { 
if(in == '/n') {
// 写入"/r/n"
fileWriter.write(wlnChar); 
}
else 
fileWriter.write(in); 
} 
fileReader.close(); 
fileWriter.close(); 
} 
catch(ArrayIndexOutOfBoundsException e) { 
System.out.println("请指定文件");
} 
catch(IOException e) { 
e.printStackTrace(); 
} 
}
} 



版权声明:本文为chenxiancool原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。