2013-06-17 3 views
0

Это не конкретный вопрос, а более широкий. Я использую Formatter для создания файла результатов вне java.Ошибки и проблемы форматирования

Formatter f = new Formatter(new File("DataResults2")); 

По какой-то причине вещи, которые я пытаюсь напечатать на этом текстовом файле, не будут отображаться в DataResults2; однако я могу получить то, что я пытаюсь напечатать, чтобы появиться на консоли на eclipse.

System.out.printf("Market Id %d, Contracts %s, Data Points %d, Starting Date %d, 
Ending Date %d\n", firstVariable, set.size(), dataPointCounter, firstDateHolder,  
lastDateHolder); 
f.format("%d, %s, %d, %d, %d, ", firstVariable, set.size(), 
        dataPointCounter, firstDateHolder, lastDateHolder); 

Как я уже говорил выше, System.out.print появится на моей консоли, однако f.format не будет появляться на моем файле.

И да я близко с помощью f.close();

Какие проблемы, которые возникают при использовании форматировщик? Почему документ не отображается, однако консоль печатает все правильно?

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

Skeet, помогает ли это вообще?

Iterator itr = set.iterator(); 
     while (itr.hasNext()) 
     { //while 
      int contractIDDisplay = (int) itr.next(); 
      if (contractIDDisplay == 1) 
      { 
       System.out.printf("%d, %d, %d, %d",contractIDDisplay, monthCounter1, firstDate1, lastDate1); 
       f.format("%d, %d, %d, %d, ",contractIDDisplay, monthCounter1, firstDate1, lastDate1); 
      } 
+2

Пожалуйста, предоставьте краткую, но * полную * программу, демонстрирующую проблему. –

+0

Вы пытались использовать '.flush()' formatter? – fge

+0

Я никогда не слышал о .flush(), что это? – Danny

ответ

1

В конце концов вам необходимо позвонить по телефону close. Также указание набора символов будет более переносимым на разных компьютерах.

Formatter f = new Formatter(new File("DataResults2"), "Windows-1252", 
          Locale.US); // Latin-1 on Windows, US, Part of Europe 
Formatter f = new Formatter(new File("DataResults2"), "UTF-8", 
          Locale._US); // International Unicode, US number notation 

f.close(); 

Если это не работает, а затем использовать абсолютный путь к файлу, может быть, в директории пользователя с:

String path = System.getProperty("user.home") + File.separator + "DataResults2.txt"; 

Нет необходимости делать что-то вроде CreateFile.

+0

«И да, я закрываю, используя f.close();» – Danny

+0

Вы называете «Windows-1252» переносной? – fge

+0

@fge приложение переносимо, так как на другом компьютере он записывает точные данные. Лично я, вероятно, один из первых, кто использует UTF-8. –

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