我正在尝试阅读包含以下内容的简单文本文件:
LOAD
比尔的豆子1200
20
15
30
QUIT
我需要逐行存储和打印内容。我这样做是使用以下代码:
String inputFile = "(file path here)";
try {
Scanner input = new Scanner(inputFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String currentLine = "";
while (!currentLine.equals("QUIT}")){
currentLine = input.nextLine();
System.out.println(currentLine);
}
input.close();
然而,输出非常“混乱”。我试图避免存储所有新行字符和文本文件中没有出现的任何其他内容。输出是:
{\ RTF1 \ ANSI \ ansicpg1252 \ cocoartf949 \ cocoasubrtf540
{\ fonttbl \ f0 \ fmodern \ fcharset0 Courier;}
{\ colortbl; \ red255 \ green255 \ blue255;}
\ margl1440 \ margr1440 \ vieww9000 \ viewh8400 \ viewkind0
\ deftab720
\ PARD \ pardeftab720 \ QL \ qnatural
\ f0 \ fs26 \ cf0 LOAD \
比尔的豆子1200 \
20 \
15 \
30 \
QUIT}
非常感谢任何帮助,谢谢!
答案 0 :(得分:2)
看起来你正在阅读一个RTF文件,不是这样吗?
否则,我发现阅读文本文件对我来说最自然,使用这个结构:
BufferedReader reader = new BufferedReader(
new FileReader(new File("yourfile.txt")
);
String text = null;
// repeat until all lines is read
while ((text = reader.readLine()) != null) {
// do whatever with the text line
}
因为这是一个RTF文件,所以请查看以下内容:RTFEditorKit
答案 1 :(得分:0)
如果您坚持编写自己的RTF阅读器,那么正确的方法是扩展FilterInputStream并在其实现中处理RTF元数据。
答案 2 :(得分:0)
只需将以下代码添加到您的类中,然后使用path参数调用它。它将所有行作为List对象返回
public List<String> readStudentsNoFromText(String path) throws IOException {
List<String> result = new ArrayList<String>();
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(new File(path));
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println(strLine);
result.add(strLine.trim());
}
//Close the input stream
in.close();
return result;
}