Java 在文本文件中有逐行的单词

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() {

我试过几种代码,但当我逐行输入textarea并尝试将其保存在文本文件中时,它仍然是一行。有人能帮我吗?我希望文本在我的文本文件中逐行显示。谢谢您

不要使用文件编写器使用OutputStreamWriter,您的问题将在流媒体传输时作为OutputStreamWriter消费者“\n”解决

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();
                }               
            }
        });
    }

}