2009-11-20 120 views
0

我想從我的Java程序寫一個文件,但沒有任何反應。我沒有得到任何例外或錯誤,只是默默地失敗。Java:爲什麼我的文件不能寫入文件?

 try { 
      File outputFile = new File(args[args.length - 1]); 
      outputFile.delete(); 
      outputFile.createNewFile(); 
      PrintStream output = new PrintStream(new FileOutputStream(outputFile)); 
      TreePrinter.printNewickFormat(tree, output); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return; 
     } 

這裏是TreePrinter功能:

public static void printNewickFormat(PhylogenyTree node, PrintStream stream) { 
    if (node.getChildren().size() > 0) { 
     stream.print("("); 
     int i = 1; 
     for (PhylogenyTree pt : node.getChildren()) { 
      printNewickFormat(pt, stream); 
      if (i != node.getChildren().size()) { 
       stream.print(","); 
      } 
      i++; 
     } 
     stream.print(")"); 
    } 
    stream.format("[%s]%s", node.getAnimal().getLatinName(), node.getAnimal().getName()); 
} 

我在做什麼錯?

+0

該代碼保證至少會創建一個(可能爲空)文件或拋出一些異常。 – 2009-11-20 09:32:02

回答

4

關閉和/或刷新你的輸出流:

TreePrinter.printNewickFormat(tree, output); 
output.close(); // <-- this is the missing part 
} catch (IOException e) { 

此外,還可通過delete()/createNewFile()是不必要的 - 你的輸出流將創建或覆蓋現有文件。

+0

在這種情況下,您的節點必須爲空 - 沒有任何內容寫入文件。您可以通過在關閉之前打印某些東西來測試是否屬於這種情況(或者您有其他問題),例如, 'output.println( 「測試」);' – ChssPly76 2009-11-20 03:15:51

1

刷新PrintStream。

相關問題