在Java中,是否有一种方法可以读取文件(文本文件),使其一次只能读取一个字符,而不是String by String。这是为了一个非常基本的词法分析器,所以你可以理解为什么我想要这样的方法。谢谢。
答案 0 :(得分:6)
以下是一次读/写一个字符的示例代码
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链接复制示例代码,但我发现这基本上与下面给出的答案相同。
REF: http://download.oracle.com/javase/tutorial/essential/io/charstreams.html
答案 1 :(得分:3)
你可以在内存中读取整个文件(如果它不是很大)作为字符串,并按字符迭代字符串
答案 2 :(得分:3)
您可以使用InputStreamReader类中的read方法,该方法从流中读取一个字符,并在到达流末尾时返回-1
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
}
}
}
答案 3 :(得分:0)
有几种可能的解决方案。通常,您可以使用Reader
java.io
个// Read from file
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
// Read from sting
BufferedReader reader = new BufferedReader(new StringReader("Some text"));
包来读取字符,例如:
/admin/