2016-04-24 5 views
0

私はこのコードの出力を.txtファイルに出力しようとしていますが、空のファイルを出力として取得していますが、コンソールで正しい結果が表示されるため、問題はStreamWriter I思う。ファイルはプリントアウトされていませんが、何が間違っていますか?

どうしたのですか?

package Hierarchies; 

    public static void generateHierarchy() { 

     Set<Entry<Long, Node>> iterator = graph.entrySet(); 
     int i =0; 
     for(Entry<Long,Node> e : iterator) { 
      System.out.println(i++ +" - " +e.getValue().firstParents()); 
     } 

    } 

    @SuppressWarnings({ "resource" }) 
    public static void main(String[] args) throws JWNLException { 
     // TODO Auto-generated method stub 
     dictionary = Dictionary.getDefaultResourceInstance(); 

     File dir = new File("C:/Users/D060891/Desktop/Thesis/sentencesNYT"); 

     for (File file : dir.listFiles()) { 

      try { 
       BufferedReader input = new BufferedReader(new FileReader(file)); 
       String line; 

       while ((line = input.readLine()) != null) { 
        demonstrateListHelper(line);        
       } 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     generateHierarchy(); 
     PrintStream out; 
     try { 
      out = new PrintStream(new FileOutputStream("output.txt")); 
      System.setOut(out); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

ファイルライターがですか? – haifzhan

+1

[Javaでファイルを作成してファイルに書き込む方法]の複製がありますか?(http://stackoverflow.com/questions/2885173/how-to-create-a-file-and-write-to-a- file-in-java) – pczeus

+1

考えられる理由:1)PrintSteamをフラッシュしたり閉じたりしないでください。 2)あなたのディレクトリは空で、ファイルは読み込まれません。 3)そのディレクトリ内のすべてのファイルが空です。 –

答えて

0

ファイルに何かを書き込むことはありません。私はちょうどファイルへのPrintStreamを作成し、それをSystem.outに割り当てる方法を見ていますが、何も印刷しません。退室後にgenerateHierarchy()に電話をかける

+0

を少し外してしまった後に 'generateHierarchy()'を呼び出してください。ちょっと恥ずかしいですね、今起こっていることがわかります...私は6ヶ月前にコードを作成し始めました。何らかの理由で私はこのようなばかげた間違いを続けています。 ) – LuckyOwl

+0

@ LuckyOwl私たちは皆そこにいました。 Thatsなぜstackoverflowが存在する;) – Nadir

0

ストリームをフラッシュして閉じます。データがディスクにフラッシュされる前にプログラムが終了している可能性があります。より高いレベルのストリームはバッファを維持するので、ディスクに直接書き込まないことに注意してください。

-1

あなたはSystem.outをリダイレクトしてファイルに書き込もうとしますが、データがSystem.outに書き込まれた後でのみリダイレクトします。

あなたが好きな何かをする必要があります。

void printHierarchy(PrintStream ps) { 
    ... 
    ps.println(...) 
} 

とメインで():

try (PrintStream ps = new PrintStream(new FileOutputStream("output.txt"))) { 
    printHierarchy(ps); 
} 
+0

これは実際に解決策であった、私は以前に与えられた答えでそれを修正した、ありがとう。 – LuckyOwl

関連する問題