gpt4 book ai didi

java - 在文本文件中逐行单词

转载 作者:行者123 更新时间:2023-11-29 05:23:06 26 4
gpt4 key购买 nike

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

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

最佳答案

我还没有尝试过,但我会先看看是否:

jTextArea1.write(writer);

根据此处的 javadoc 提供所需的文件输出:

http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#write(java.io.Writer)

如果 that 没有正确使用与 JTextArea 相同的换行符,那么您可以使用蛮力方法并一次循环遍历控件中的行,如下所示:

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

编辑:

我刚刚对此进行了测试以确认,并且两种方法都会产生相同的换行位置(因此简洁的 jTextArea1.write(writer) 自然更可取)。请注意,这两种方法都会忽略自动插入的换行位置,并且只会在文本输入期间使用回车键的任何地方将回车符保存到写入的文件中。

如果出于某些不寻常的原因,需要在输出文件中实际保存换行的位置,您将需要使用 LineBreakMeasurer 来根据 JTextArea 的宽度测量文本的宽度。类(class)。官方教程可以在这里找到 http://docs.oracle.com/javase/tutorial/2d/text/drawmulstring.html

但是,请注意,如果您这样做,您将在保存的文件中插入硬换行符,而最初只有软换行,因此将保存的数据加载回 JTextArea 将不会完全重现原始输入。

关于java - 在文本文件中逐行单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com