2016-04-23 2 views
0

Я не уверен, почему моя функция вывода не собирает символы новой строки при создании файла. Вот код:FileWriter не будет добавлять новые строки

private void outputToFile(){ 
    final JFileChooser fc = new JFileChooser(); 
    fc.setSelectedFile(new File("frequency.txt")); 
    int returnVal = fc.showSaveDialog(null); 
    File file = fc.getSelectedFile(); 
    try{ 
     FileWriter writer = new FileWriter(file); 
     String out = this.toString(); 
     writer.append(out); 
     writer.flush(); 
     writer.close(); 
    } 
    catch(IOException e){ 
     System.out.println("Cancelled and aborted"); 
    } 
    } 

Мой метод ToString отлично работает, когда я печатаю в командной строке, но отбрасывает все экземпляры \ п в выходном файле. Ниже приведен пример "сломанный" Выход из этой функции (это счетчик частоты)

Выходного файл: В: 5 \ П: 7 С: 1 : с 5 т: 6 с: 3 (пробел): 6 г: 1 е: 4 C: 1 о: 2 л: 3 :. 2 Вт: 1 ,: 1 ч: 4 «: 1 ш: 1 y: 3 \ t: 1 R: 1 я: 1 г: 1 : 1 B: 1 : 1

Там должны быть новые строки после каждого номера есть.

Если вы хотите полную группу моих классов, вот они: http://pastebin.com/CCLLBUqF

ответ

1

При записи файла, вы должны включать в себя как символ новой строки и символ перевода строки. Таким образом, в вашем toString() методе, когда вы добавляете "\n" новой строки, вместо того, чтобы добавить как в новую строку и символ новой строки: "\r\n"

+0

В идеале вы должны использовать System.getProperty («line.separator»); вместо зависимого от платформы символа разделителя линии – Natecat

+0

Hm. Я попытался использовать как «\ r», так и метод System.getproperty, и оба они потерпели неудачу. \ R ничего не изменил, и System.getProperty просто добавил «нуль» всюду. – MegaZeroX

+0

Nevermind. Он работал, когда я изменил его на порядок с помощью \ r \ n. Спасибо огромное! – MegaZeroX