JAVA中将JTextArea组件中的数据写入文件如何实现换行

部分代码如下:

try {
fw = new FileWriter ( FilePath ( path ) );
bw = new BufferedWriter ( fw );
bw.write( JtextareaClass.jtextarea1.getText() );
bw.newLine();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
运行后写入文件中的数据都到一行去了,请问如何实现换行,谢谢
按照四楼的方法依旧不行。。。
try {
fos = new FileOutputStream ( FilePath ( path ) );
pw = new PrintWriter(fos);
pw.write( JtextareaClass.jtextarea1.getText() );
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
这是改动后的代码,换行还是不能正常进行,谢谢解答- -

回五楼:不是抛出异常- - 是不能正常换行。。。
比如JTextArea中如下内容:
include XXX
INT XXX
输出到TXT文件中会变成include XXXINT XXX

你把流换成
FileOutputStream fos=new FileOutputStream(String FilePath);

PrintWriter pw=new PrintWriter(fos);

pw.writer(JtextareaClass.jtextarea1.getText() );

试试

我写了一个,试了没问题,解决办法就是对JtextArea添加键盘监听,当按下enter键时自动添加一个换行符\r,全部代码如下:

package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.FileOutputStream;

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

public class Test implements ActionListener,KeyListener{
JTextArea jta;

/**
* 空参构造方法
*/
public Test() {
JFrame jf=new JFrame("Test");
JPanel jp=new JPanel();
jta=new JTextArea(10,20);
jta.addKeyListener(this);//添加键盘监听
JButton b=new JButton("输出");
b.addActionListener(this);

jp.add(jta);
jp.add(b);
jf.add(jp);

jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

@Override
public void actionPerformed(ActionEvent e) {
try {
FileOutputStream fos=new FileOutputStream("D:/1.txt");
fos.write(jta.getText().getBytes());
fos.close();
} catch (Exception e1) {
e1.printStackTrace();
}

}

/**
* 键盘按下时执行
*/
@Override
public void keyPressed(KeyEvent e) {
//当按下Enter键时,插入一个换行符(Enter键的keycode为10)
if(e.getKeyCode()==10){
jta.append("\r");
}
}

@Override
public void keyReleased(KeyEvent e) {
}

@Override
public void keyTyped(KeyEvent e) {
}

/**
* main方法
* @param args
*/
public static void main(String[] args) {
new Test();
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-08
一行一行的写,可以不?
JTextArea ta=JtextareaClass.jtextarea1;
for(int i = 0; i < ta.getRows(); i++){
String str = ta.getText(ta.getLineStartOffset(i),ta.getLineEndOffset(i);
pw.write(str+"\r\n");
}
第2个回答  2010-08-07
bw.write("\r\n"); //换行的

我在想,你不会是用记事本打开,同时你的记事本没有设置为强制换行。
第3个回答  2010-08-07
抛出什么异常?