Java 在文本文件中有逐行的单词
我试过几种代码,但当我逐行输入textarea并尝试将其保存在文本文件中时,它仍然是一行。有人能帮我吗?我希望文本在我的文本文件中逐行显示。谢谢您不要使用文件编写器使用OutputStreamWriter,您的问题将在流媒体传输时作为OutputStreamWriter消费者“\n”解决Java 在文本文件中有逐行的单词,java,swing,user-interface,jfilechooser,filewriter,Java,Swing,User Interface,Jfilechooser,Filewriter,我试过几种代码,但当我逐行输入textarea并尝试将其保存在文本文件中时,它仍然是一行。有人能帮我吗?我希望文本在我的文本文件中逐行显示。谢谢您不要使用文件编写器使用OutputStreamWriter,您的问题将在流媒体传输时作为OutputStreamWriter消费者“\n”解决 JButton btnExport = new JButton("Export"); btnExport.addActionListener(new ActionListener() {
JButton btnExport = new JButton("Export");
btnExport.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JFileChooser saver = new JFileChooser("");
int returnVal = saver.showSaveDialog(null);
File file = saver.getSelectedFile();
BufferedWriter writer = null;
if (returnVal == JFileChooser.APPROVE_OPTION)
{
try
{
writer = new BufferedWriter( new FileWriter( file.getAbsolutePath().toString() + "\n"));
writer.write( jTextArea1.getText());
writer.newLine();
writer.flush();
writer.close( );
JOptionPane.showMessageDialog(null, "The Text was Saved Successfully!",
"Success!", JOptionPane.INFORMATION_MESSAGE);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "The Text could not be Saved!",
"Error!", JOptionPane.INFORMATION_MESSAGE);
}
}
}});
我没有试过,但我会先看看是否:
FileOutputStream fos = new FileOutputStream(new File("path"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
根据此处的javadocs提供所需的文件输出:
如果这不能正确地使用与JTextArea相同的换行符,那么您可以使用蛮力方法在控件中一次循环一行,如下所示:
jTextArea1.write(writer);
String text=jTextArea.getText();
对于(int i=0;i
编辑:
我刚刚对此进行了测试以确认,两种方法都产生相同的换行位置(因此简洁的jTextArea1.write(writer)
自然更可取)。请注意,这两种方法都会忽略自动插入的换行位置,并且在文本输入过程中使用enter键时,仅保存回车返回到写入的文件
如果出于某些不寻常的原因,需要在输出文件中实际保存换行位置,则需要使用LineBreakMeasurer
类根据JTextArea的宽度测量文本的宽度。这方面的官方教程可以在这里找到
但是,请注意,如果您这样做,您将在保存的文件中插入硬换行符,而原来只有软换行,因此将保存的数据加载回JTextArea将不会准确地再现原始输入。您可以使用FileWriter将字符串写入文件。 下面的代码工作正常
String text = jTextArea.getText();
for( int i=0; i < jTextArea.getLineCount(); ++i) {
int start = jTextArea.getLineStartOffset(i);
int end = jTextArea.getLineEndOffset(i);
String line = text.substring(start, end);
writer.write(line);
writer.newLine();
}
尝试使用。别忘了,如果您启用了换行/换行,那么这不会在文件中构成新行。我对它还是新手。我将如何禁用换行或换行。Hmmm看起来很混乱,因为我要将它们保存在一个文本文件中。如何在文本区域中输入文本?您是否使用enter键写入新行?是的,我键入文本文件,然后单击按钮时,我可以将文本区域的输入保存到文本文件(行格式的行)。文本区也是一样。哇,谢谢你的帮助。我将尝试此方法并在OutputStreamWriter上搜索,我应该阅读更多内容。非常不鼓励使用空布局,尤其是对于新开发人员/没有经验的开发人员。我创建此方法是为了解决将文本区域内容写入文本文件的问题,这里不解释布局。是的,我不是一个摇摆程序员
package areaText;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class TextAreaTest extends JFrame{
/**
* @param args
*/
public static void main(String[] args) {
new TextAreaTest().createFrame();
}
private void createFrame() {
setSize(200,200);
setLayout(null);
final JTextArea area=new JTextArea("Test");
area.setSize(50, 50);
area.setBounds(0, 0, 100, 100);
add(area);
JButton button=new JButton("Save");
button.setBounds(100, 100, 80, 30);
add(button);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s=area.getText();
System.out.println("GOT-"+s);
try {
File f=new File("testFile.txt");
System.out.println("Writing "+f.getAbsolutePath());
FileWriter fr=new FileWriter(f);
fr.write(s);
fr.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
}