实现简单的文本编辑器

时间:2013-12-19 18:07:57

标签: java file file-io

我所要做的就是实现一个简单的文本编辑器。我现在要保持这个简单。
我有text-areastring variable来保存文本,还有一个文件来写text-area的内容。直观地说,我认为下面有一个更好的方法(更好的可读性/敏捷代码),这应该适用于记事本:

 FileWriter out = new FileWriter("filename.txt");
 String sh = jTextArea1.getText();

 for (int i=0; i<sh.length(); i++)
 {
     if (sh.charAt(i) ==  '\n')
          out.write("\r\n");
     else
         out.write(sh.charAt(i));
  }
  out.close();

3 个答案:

答案 0 :(得分:0)

使用JTextPane而不是JTextArea。您还需要一个Document对象。那里还有更多的多功能性。然后您可以使用一个衬垫将整个文档写入文件

BufferedWriter bw = new BufferedWriter(new FileWriter(file));

textPane.getEditorKit().write(bw, doc, 0, doc.getLength());   <-- one line

的Javadoc

public abstract void write(OutputStream out,
         Document doc,
         int pos,
         int len)
                    throws IOException,
                           BadLocationException
  

以适合此类内容处理程序的格式将文档内容写入给定流。

Parameters:
    out - The stream to write to
    doc - The source for the write.
    pos - The location in the document to fetch the content from >= 0.
    len - The amount to write out >= 0.

JTextPane javadoc | EditorKit javadoc | Text Components Tutorial&lt; - 我真的推荐这个。

答案 1 :(得分:0)

sh.replace("\n", "\r\n");
out.write(sh);

答案 2 :(得分:0)

使用JTextComponent的read(...)write(...)方法:

FileReader reader = new FileReader( ... );
BufferedReader br = new BufferedReader(reader);
edit.read( br, null );

FileWriter writer = new FileWriter( ... );
BufferedWriter bw = new BufferedWriter( writer );
edit.write( bw );