2016-04-24 73 views
0

我一直在试图让这个代码的输出被打印在一个.txt文件中,但是我得到一个空文件作为输出,但是我在控制台中看到了正确的结果,所以问题出在StreamWriter上认为。该文件没有被打印出来,我做错了什么?

那么我做错了什么?

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-toa-a-文件在Java) – pczeus

+1

可能的原因:1)您不冲洗或关闭PrintSteam。 2)你的目录是空的,没有文件被读取。 3)该目录中的所有文件都是空的。 –

回答

0

我没有看到你写入任何文件。我只看到你如何创建一个PrintStream到一个文件并将其分配给System.out,但是这时你什么都不打印。在您退出后调用generateHierarchy()

+0

划掉了,这有点令人尴尬,我看到了现在发生的事情......我只在6个月前开始编码,出于某种原因,我一直在做这样的愚蠢错误,谢谢: ) – LuckyOwl

+0

@LuckyOwl我们都去过那里。这就是为什么stackoverflow存在;) – Nadir

0

冲洗并关闭流。在数据刷新到磁盘之前,程序可能会结束。请注意,较高级别的流保留一个缓冲区,因此不会直接写入磁盘。

-1

您尝试通过重定向System.out来写入文件,但只有在数据写入System.out后才重定向它。

你应该做这样的事情:

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

,并在main():

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

这实际上是解决方案是的,我修复了以前给出的答案,谢谢。 – LuckyOwl