写之后的空白文件?(Blank file after writing to it?)

2019-07-04 06:35发布

所以,我一直想写一个Bukkit插件我的一个朋友,以及由于某种原因,配置生成不工作。 有问题的代码如下,我会很高兴地补充说,人们需要帮助我这个任何代码。 当我运行该程序,已创建配置文件结束了空白。 测试文件就好了(我测试了通过简单的评论指出,删除文件行),但一旦我试图让多行失败。 任何人都可以帮忙吗?

PrintWriter out = new PrintWriter(new FileWriter(config));
out.println("########################################");
out.println("#  hPlugin is written by newbiedoodle  #");
out.println("########################################");
out.println("#   -----  Plugin config file  -----   #");
out.println("########################################");
out.println("NOTE: Do not edit the config file besides changing the values - it may result in errors.");
out.println("--------------");
out.println("Strikes before being banned?");
out.println("3");
out.println("Godmode?");
out.println("true");
out.println("First time running the plugin?");
out.println("true");
out.println("Curse protection?");
out.println("true");
out.println("Emergency shelter?");
out.println("true");
out.println("Path building?");
out.println("true");
out.println("Blocked words/phrases (Separate with comma)");
out.println("[censored]");
out.close();
System.out.println("Successfully wrote defaults to config");

整个事情被封闭在一个try / catch循环正好赶上可能弹出的任何错误。 我得到的,我失去了一些东西极为明显的感觉,但我找不到它是什么。

  • config是一个File与它需要有路径对象,所以我不认为它是

  • 我有计划单独做几乎一切,让我可以告诉正是错误发生的用户,所以只是外面的创建该文件try / catch

Answer 1:

你需要调用...

out.flush();

...您电话之前...

out.close();

PrintWriter的使用缓冲存储器中,以更有效地使用磁盘。 你需要调用flush()告诉PrintWriter的写数据。



Answer 2:

最有可能你已经运行其再次和你正在写一个文件,并检查其他。 我怀疑的文件名是相同的,但目录,也许是基于工作目录是不是你认为它是。

关闭呼叫在这种情况下平齐的PrintWriter使用的BufferedWriter和其他Writer类不被缓冲。

  251       public void flush() throws IOException {
  252           synchronized (lock) {
  253               flushBuffer();
  254               out.flush();
  255           }
  256       }
  257   
  258       public void close() throws IOException {
  259           synchronized (lock) {
  260               if (out == null) {
  261                   return;
  262               }
  263               try {
  264                   flushBuffer();
  265               } finally {
  266                   out.close();
  267                   out = null;
  268                   cb = null;
  269               }
  270           }
  271       }


Answer 3:

You need to flush or close the stream when you're done. Both are very important before exiting. Close will automatically call flush().



文章来源: Blank file after writing to it?