我所要做的就是实现一个简单的文本编辑器。我现在要保持这个简单。
我有text-area
和string 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();
答案 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 );