读取文本文件中的每个字符

时间:2014-11-13 03:40:37

标签: java text bufferedreader filereader

我试图读取文本文件中的每个字符(标签,新行)。我在阅读所有这些内容时遇到了一些问题。我当前的方法是读取标签而不是新行。这是代码:

//reads each character in as an integer value returns an arraylist with each value
    public static ArrayList<Integer> readFile(String file) {
        FileReader fr = null;
        ArrayList<Integer> chars = new ArrayList<Integer>(); //to be returned containing all commands in the file
        try {
            fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            int tempChar = ' ';
            String tempLine = "";
            while ((tempLine = br.readLine()) != null) {
                for (int i = 0; i < tempLine.length(); i++) {
                    int tempIntValue = tempLine.charAt(i);
                    chars.add(tempIntValue);
                }
            }
            fr.close();
            br.close();
        } catch (FileNotFoundException e) {
            System.out.println("Missing file");
            System.exit(0);
        } catch (IOException e) {
            System.out.println("Empty file");
            System.exit(0);
        }
        return chars;
    }

我最初使用read()方法而不是readLine()但是它有同样的问题。我将char表示为int。任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

我建议您使用try-with-resourcesList和钻石运算符<>,并使用BufferedReader.read()方法读取每个字符。

public static List<Integer> readFile(String file) {
    List<Integer> chars = new ArrayList<>();
    try (FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);) {
        int ch;
        while ((ch = br.read()) != -1) {
            chars.add(ch);
        }
    } catch (FileNotFoundException e) {
        System.out.println("Missing file");
        System.exit(0);
    } catch (IOException e) {
        System.out.println("Empty file");
        System.exit(0);
    }
    return chars;
}

BufferedReader.readLine() Javadoc记录了你没有获得行结尾的原因,其中部分说明(强调添加),

  

包含该行内容的字符串,不包括任何行终止字符 ...