【问题标题】:PrintWriter not writing to seatingChart.txt filePrintWriter 未写入 seatChart.txt 文件
【发布时间】:2017-08-22 06:55:13
【问题描述】:

我需要制作一个电影票节目。我写了课堂的大部分内容。最后要做的是通过将信息发送到文本文件来创建一个带有PrintWriter 的文本文件。

我还没有开始第二部分。现在我只是想打印座位表的前两行。这不需要来自班级的信息。

问题是根本没有向文本文件添加任何内容。这是我目前所拥有的:

public void createSeatingChart() throws FileNotFoundException 
{
    File seatingChart = new File("C:/Users/Chris/Documents/NetBeansProjects/Auditorium/seatingChart.txt");
    PrintWriter pw = new PrintWriter(seatingChart);

    pw.println("\t\tSeats");
    pw.println("\t123456789012345678901234567890");

    pw.close();
}

我很确定我错过了一些小东西,但我不确定它是什么。有什么想法吗?

【问题讨论】:

  • 你怎么知道有问题?您的问题缺少重要的上下文信息:您看到了什么错误?有哪些不当行为?你怎么称呼这个?您是否适当地处理异常?
  • 完全没有错误,我得到的唯一异常是我抛出的 filenotfound
  • 调试 101:在此函数的开头放置一个断点或 System.out.println 调用,并确保它正在被调用。然后单步(或添加更多printlns)看看实际发生了什么。任何课程都应涵盖的第一个主题是调试。
  • 我认为您的文件路径错误。而且,也是好事。 PrintWriter(File) javadoc 注释 用作此编写器目标的文件。如果文件存在,那么它将被截断为零大小.
  • 说真的,使用标点符号。你会发现有时放慢速度有助于清晰自己的想法。

标签: java netbeans printwriter


【解决方案1】:

这是一个对我有用且没有任何错误的简单解决方案。

在 JavaDoc 中为 PrintWriter 类声明:

FileNotFoundException - 如果给定的文件对象不表示 现有的可写常规文件和该名称的新常规文件 无法创建,或者如果在打开或 创建文件

我认为FileNotFoundException 的问题是因为您试图在不存在的目录中创建文件。

所以要解决这个问题你必须首先检查你要创建的文件的父目录是否已经存在,如果它不存在你必须先创建它然后你可以尝试使用写入文件PrintWriter

注意:第二个if 声明是optionnelle 你可以删除它 因为PrintWriter 将在不存在时创建文件(仅用于 演示目的)。

public void createSeatingChart() throws IOException 
    {

        File seatingChart = new File("C:/Users/Chris/Documents/NetBeansProjects/Auditorium/seatingChart.txt");

        // Check The parent Directory is Exist or Create it.
        if (!seatingChart.getParentFile().exists()) seatingChart.getParentFile().mkdirs();

        // create a new file if not exist 
        if (!seatingChart.exists()) seatingChart.createNewFile();


        PrintWriter pw = new PrintWriter(seatingChart);

        pw.println("\t\tSeats");
        pw.println("\t123456789012345678901234567890");

        pw.close();


    }

【讨论】:

  • flush 调用是完全多余的。只需检查 PrintWriter 的父级 Writer API 就可以看到 close 总是调用 flush。
  • 请参阅this question 及其答案以了解更多信息。
  • 对不起大家我修复了关闭东西时我不确定是否刷新的错误。
  • 好的,但这如何回答 OP 的问题?它如何告诉他他的代码是如何不工作的?
  • 我认为现在答案已经足够清楚,可以理解异常来自何处以及如何解决它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
相关资源
最近更新 更多