java - TextArea - 有什么方法可以获取所有文本吗?

标签 java text file-io save editor

所以我正在设计一个文本编辑器。对于打开/保存方法,我尝试使用 TextArea (它不必是一个,它只是我当前的方法)。现在,我现在有两个问题:

1) 当我加载文件时,它当前不会删除文本编辑器中当前的内容。例如,如果我输入“Owl”,然后加载包含“Rat”的文件,它最终会显示为“OwlRat”。为了解决这个问题,我计划使用 ReplaceRange 方法(不过,这也不是绝对的,任何建议都很棒!)。但是,我必须替换文本编辑器的所有内容,而不仅仅是选定的文本,而且我不知道该怎么做。有什么建议吗?

2) 目前,当我加载文件时,除非我在运行应用程序的同时保存该文件,否则不会发生任何情况。因此,例如,运行程序,保存文件,关闭程序,再次运行程序,然后加载文件将不会给出任何结果。我知道这是因为字符串 x 没有保留,但我想不出解决办法。有人建议使用 vector ,但我不知道它们有什么帮助......

以下是打开/保存方法的代码:

打开:

public void Open(String name){    
    File textFile = new File(name + ".txt.");
      BufferedReader reader = null;  
      try 
      {  
         textArea.append(x);
         reader = new BufferedReader( new FileReader( textFile));  
         reader.read();  
     }  
      catch ( IOException e)  
      {  
     }  
      finally 
     {  
         try 
          {  
             if (reader != null)  
                 reader.close();  
         }  
        catch (IOException e)  
         {                     
         }  
     }  
 } 

保存:

public void Save(String name){   
File textFile = new File(name + ".txt");
BufferedWriter writer = null;   
try  
{   
    writer = new BufferedWriter( new FileWriter(textFile));   
    writer.write(name);
    x = textArea.getText();

}   
catch ( IOException e)   
{   
}   
finally  
{   
   try  
  {   
           if ( writer != null)   
                    writer.close( );   
   }   
    catch ( IOException e)   
    {   
   }   
}  
}

最佳答案

我的男朋友也遇到了同样的问题,经过深思熟虑和研究,我什至找到了解决方案。

你可以使用ArrayList来放置TextArea的所有内容并通过调用save作为参数发送,因为作者只是写了字符串行,然后我们使用“for”逐行写入最后的ArrayList我们将在 txt 文件中添加 TextArea 内容。 如果有些事情没有意义,我很抱歉谷歌翻译和我不会说英语。

观察Windows记事本,它不会总是跳行,并且全部显示在一行中,使用写字板就可以了。

<小时/>

私有(private) void SaveActionPerformed(java.awt.event.ActionEvent evt) {

    String NameFile = Name.getText();
    ArrayList< String > Text = new ArrayList< String >();

    Text.add(TextArea.getText());

    SaveFile(NameFile, Text);
} 
<小时/>

public void SaveFile(String name, ArrayList< String> message) {

    path = "C:\\Users\\Paulo Brito\\Desktop\\" + name + ".txt";

    File file1 = new File(path);

    try {

        if (!file1.exists()) {

            file1.createNewFile();
        }


        File[] files = file1.listFiles();


        FileWriter fw = new FileWriter(file1, true);

        BufferedWriter bw = new BufferedWriter(fw);

        for (int i = 0; i < message.size(); i++) {

            bw.write(message.get(i));
            bw.newLine();
        }

        bw.close();
        fw.close();

        FileReader fr = new FileReader(file1);

        BufferedReader br = new BufferedReader(fr);

        fw = new FileWriter(file1, true);

        bw = new BufferedWriter(fw);

        while (br.ready()) {

            String line = br.readLine();

            System.out.println(line);

            bw.write(line);
            bw.newLine();

        }
        br.close();
        fr.close();

    } catch (IOException ex) {
        ex.printStackTrace();
        JOptionPane.showMessageDialog(null, "Error in" + ex);        
}

关于java - TextArea - 有什么方法可以获取所有文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291303/

相关文章:

java - 对类加载时未知的常量使用 final 和 static

java - Spring @MockBean 未注入(inject) Cucumber

java - "+"和 "-"键似乎可以切换 SWT 按钮,是否可以覆盖此行为?

html - 如何在 CSS 中使文本居中并且最大宽度为 800px?

android - 减少 Button 内的文本填充

java - JTable不显示Object[][]数据

Java 利用 ArrayList 通过 GUI 将联系人(对象)写入和读取到文件

java - Angular 6 Spring Boot POST 问题

objective-c - 在给定特定分母的情况下,找到 float 小数的分子

c++ - 如何使用 shared_ptr 和 SWIG 避免内存泄漏