我正在尝试编写一个程序来读取文件(这是一个 Java 源文件),从该文件中创建一个包含某些指定值的 Arraylist。并将该 Arraylist 输出到另一个结果文件中。
我正在使用 PrintWriter 来制作新的结果文件。这是我的程序的摘要版本:
ArrayList<String> exampleArrayList = new ArrayList<String>();
File actualInputFile = new File("C:/Desktop/example.java");
PrintWriter resultingSpreadsheet= new PrintWriter("C:/Desktop/SpreadsheetValues.txt", "UTF-8");
FileReader fr = new FileReader(actualInputFile);
BufferedReader br = new BufferedReader(fr);
String line=null;
while ((line = br.readLine()) != null) {
// code that makes ArrayList
}
for (int i = 0; i < exampleArrayList.size(); i++) {
resultingSpreadsheet.println(exampleArrayList.get(i));
}
resultingSpreadsheet.close();
问题是当我运行它时,没有任何东西打印到结果电子表格中。它完全是空的。
但是,当我替换时,该程序可以完美运行(这意味着它将所有内容正确打印到生成的电子表格文件中):
File actualInputFile = new File("C:/Desktop/example.java");
这是我想要作为输入文件的文件,大小为 481 KB,其中:
File smallerInputFile = new File("C:/Desktop/smallerExample.txt");
这实际上只是 .java 源文件的一个较小的 .txt 示例版本,大小为 1.08 KB。
我尝试了一些方法,包括刷新 PrintWriter、将其包装在 FileWriter 周围、将 .java 文件中的所有代码复制粘贴到文本文件中,以防出现扩展问题,但这些似乎不起作用。我开始认为这一定是因为 PrintWriter 制作的文件的大小,但这很可能不是问题所在。也许我需要把所有东西都放在一个流中(就像这里所说的:http: //docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html)?如果是这样,我该怎么做?
当较小的InputFile一切正常时,为什么读取较大的actualInputFile并正确输出其数据是一个问题?有人能帮忙吗?