2013-11-30 2 views
-1

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

Это то, что я пишу в поле

Hello 
My name is alexander 
Goodye! 

Что я получаю

HelloMy name is alexanderGoodbye! 

Может кто-нибудь помочь? Вот мой код.

package main; 

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 

public class TextEditor { 
static final JTextArea textArea = new JTextArea(20, 50); 
static final JFileChooser saveDirectory = new JFileChooser("save"); 
public static void start(){ 
    JFrame f = new JFrame("Text editor"); 
    JButton saveButton = new JButton("Save"); 
    JButton loadButton = new JButton("load"); 
    JPanel editor = new JPanel(); 
    JPanel buttons = new JPanel(); 

    buttons.add(saveButton); 
    buttons.add(loadButton); 

    //Button setup 
    saveButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      save(); 
     } 
    }); 
    //END 

    editor.add(textArea); 

    f.setLayout(new BorderLayout(3,3)); 
    f.add(buttons, BorderLayout.PAGE_START); 
    f.add(textArea); 

    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    f.pack(); 
    f.setVisible(true); 

} 
public static void save(){ 
    File dir; 
    saveDirectory.showDialog(null, "Save file"); 
    dir = saveDirectory.getSelectedFile(); 
    System.out.println(dir); 

    try { 
     FileWriter fw = new FileWriter(dir); 
     BufferedWriter bw = new BufferedWriter(fw); 

     bw.write(textArea.getText()); 
     bw.close(); 
     System.out.println("Done!"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     JOptionPane.showMessageDialog(null, e); 
    } 
} 
} 

Любая помощь будет принята с благодарностью.

EDIT 1: Установленный np ++ и текстовый файл отображается отлично. почему и как я могу сделать файл совместимым с Windows стандартом notepad.exe

ответ

0

Вам не хватает line-terminator. Попробуйте:

textArea.write(bw); 

Этот метод объясняется в this possible duplicate question.

+0

did not работа по-прежнему приводит к тому же. –

+0

Еще одна работа :( –

+1

Обратите внимание, что это также то, что предлагает @AndrewThompson. – Domi

0

Скорее всего, вы открываете файл под блокнот Windows, для которого требуется CRLF endline. Попробуйте открыть файл с помощью Notepad ++, который поддерживает окончания строки CR. Файл должен выглядеть нормально.

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

+1

Попробуйте использовать правильную строку, заканчивающуюся для ОС! –

+0

nope didnt work: ( –

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