大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: FileReader、FileWriter

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

FileReader、FileWriter的使用非常简单,直接举个例子。在Linux下撰写的文字文件,其断行字节是'\n',而在 Windows下撰写的文字文件其断行是'\r'与'\n'两个连续字节,如果您在Windows下使用记事本开启一个Linux下撰写的文字文件,其在显示上并不会有断行的效果,且'\n'字节会被用一个黑色方块来显示。

我们在这边撰写一个简单的程序,读入Linux下撰写的文字文件,并写入另一个文件,在读取到'\n'字节时,就取代为'\r'与'\n'两个连续字节,如此新的文件在Windows的记事本程序中,就可以有断行显示的效果。

  • 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')
fileWriter.write(wlnChar);
else
fileWriter.write(in);
}
fileReader.close();
fileWriter.close();
}
catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}

}
}