[英]Creating a File using PrintWriter in Java, and Writing to that File
我正在尝试编写一个程序,该程序读取文件(这是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();
问题是,当我运行此命令时,什么都不会打印到resultSpreadsheet上。 完全是空的。
但是,当我替换以下内容时,该程序可以完美运行(这意味着它将所有内容正确地打印到了resultSpreadsheet文件中):
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并正确地输出其数据是一个问题? 有人能帮忙吗?
写入excel工作表时检查异常,因为我真的不认为这是大小问题。 下面是成功执行的示例代码,文件大小约为1 MB。
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("D:\\AdminController.java"));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
这应该作为评论,但我没有代表。 在文档中,它既有写方法又有打印方法。 您是否尝试过使用write()?
我怀疑这是文件的大小,可能在您正在测试的两个文件之间,一个是.txt,另一个是.java
编辑:可能是两者的第二个建议。 首先只是我在文档中注意到的东西。
PrintWriter
的方法不会引发Exception。 调用checkError()
方法,该方法将刷新流并在发生错误时返回true。 处理较大的文件时很可能发生错误,例如编码错误。
检查您的程序。 如果文件为空,则意味着您的程序在完成程序之前不会关闭PrintWriter。 例如,您可能在程序的一部分中返回了代码,这导致了resultSpreadsheet.close();的返回。 尚未运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.