2015-12-17 2 views
-1

У меня есть следующая проблема. Переменная печатает строки на текстовом файлеОшибка при печати. Только последнее заявление ist writing

``` 
1 3 1. 
``` 

На самом деле, он должен выводит

``` 
1 1 1 
1 2 1 
1 3 1 
``` 

Я не знаю, где ошибка находится в Кодексе. Кажется, что код переписывается каждый раз, и последнее утверждение было перезаписано. Может кто-нибудь поможет мне

public class RankingExportTest { 
private static final String LINE_SEPARATOR = "\r\n"; 
Set<String> exportGraph(DirectedUnweightedGraph<CommonNode, CommonEdge<CommonNode>> graph) throws IOException { 
Set<String> rows = new LinkedHashSet<>((int)graph.getEdgeCount()); 
for(CommonNode fromNode: graph.getNodes()) { 
for(CommonNode toNode: graph.adjacentTo(fromNode)) { 
      String row = String.format(
       "%d %d 1", 
       fromNode.getIdentity().intValue(), 
       toNode.getIdentity().intValue() 
      ); 
      rows.add(row); 
      System.out.println(row); 

      try { 
       PrintWriter out; 
       out = new PrintWriter("/Users/......"); 
       out.print(rows); 
       out.close(); 
       //System.out.println(row); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    return rows; 

} 
+0

Возможно, вы открыли файл в режиме перезаписи вместо добавления содержимого? Попробуйте решение отсюда: [возможно дубликат] (http://stackoverflow.com/questions/14443662/printwriter-add-text-to-file) –

ответ

0

Вы открытый и закрыть PrintWriter в каждой итерации цикла, переписав файл каждый раз. Откройте его перед циклом и закройте его.

0

Вы переписываете файл с каждой строкой. Создайте PrintWriter один раз, напишите весь вывод, а затем закройте его:

PrintWriter out = null; 
try { 
    out = new PrintWriter("path"); 
    for (CommonNode fromNode : graph.getNodes()) { 
     for (CommonNode toNode : graph.adjacentTo(fromNode)) { 
      String row = String.format("%d %d 1", fromNode.getIdentity().intValue(), toNode.getIdentity().intValue()); 
      rows.add(row); 
      System.out.println(row); 
      out.print(row); 
     } 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} finally { 
    if (out != null) { 
     out.close(); 
    } 
} 
+0

Thx, но когда я использовал этот подход, я получаю ошибку ava: 43: ошибка: переменная не может быть инициализирована out.close(); –

+0

@OkanAlbayrak это было вызвано не обработкой исключения, попробуйте сейчас. – Keammoort

+0

Хорошо, я исправил. Вы должны только вывести утверждение = new PrintWriter («/ Users/......»); выше –

Смежные вопросы