我试图读取文本文件中的每个字符(标签,新行)。我在阅读所有这些内容时遇到了一些问题。我当前的方法是读取标签而不是新行。这是代码:
//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。任何帮助都非常感谢!
答案 0 :(得分:0)
我建议您使用try-with-resources
,List
和钻石运算符<>
,并使用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记录了你没有获得行结尾的原因,其中部分说明(强调添加),
包含该行内容的字符串,不包括任何行终止字符 ...