在Java中,是否有一种方法可以按一个字符读取文件(文本文件),而不是逐个字符串读取。这是为了实现极其基本的词法分析器而设计的,因此您可以理解我为什么需要这样的方法。谢谢。
public class CopyCharacters {
public static void main(String[] args) throws IOException {
FileReader inputStream = null;
FileWriter outputStream = null;
try {
inputStream = new FileReader("xanadu.txt");
outputStream = new FileWriter("characteroutput.txt");
int c;
while ((c = inputStream.read()) != -1) {
outputStream.write(c);
}
} finally {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
}
}
ref: http://download.oracle.com/javase/tutorial/essential/io/charstreams.html
public static void processFile(File file) throws IOException {
try (InputStream in = new FileInputStream(file);
Reader reader = new InputStreamReader(in)) {
int c;
while ((c = reader.read()) != -1) {
processChar((char) c); // this method will do whatever you want
}
}
}
如果文件不太大,您可以将整个文件读入内存作为字符串,并逐个字符迭代该字符串。
有几种可能的解决方案。通常您可以使用来自 java.io
包的任何 Reader
读取字符,例如:
// Read from file
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
// Read from sting
BufferedReader reader = new BufferedReader(new StringReader("Some text"));