繁体   English   中英

使用Java中的PrintWriter创建文件并写入该文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM