逐个字符地从文本文件中读取

时间:2011-10-29 20:42:03

标签: java text io

在Java中,是否有一种方法可以读取文件(文本文件),使其一次只能读取一个字符,而不是String by String。这是为了一个非常基本的词法分析器,所以你可以理解为什么我想要这样的方法。谢谢。

4 个答案:

答案 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/