gpt4 book ai didi

java - 从 JTextPane 中选择字符串的更有效方法?

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

不是我的代码不行,而是我怀疑它是否非常高效。我的理论是,它不是 xD

我有一个 JTextPane,我必须在其中获取文本(基本上每次 JTextPane 换行时都会换行),然后将其放入 .txt 文件中。正如我所说,一切正常,但我怀疑它的实现。这是我怀疑的部分:

public void printLog() {
String s = logTextArea.getText();
ArrayList<String> log = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) != '\n') {
sb.append(s.charAt(i));
} else {
log.add(sb.toString());
sb.delete(0, sb.length());
}
}

以上内容仅供引用:

public void printLog() {
String s = logTextArea.getText();
ArrayList<String> log = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) != '\n') {
sb.append(s.charAt(i));
} else {
log.add(sb.toString());
sb.delete(0, sb.length());
}
}
File f = new File("JServer_Log.txt");
BufferedWriter bw = null;
FileWriter fr = null;
try {
if(f.exists()) {
fr = new FileWriter(f,true);
} else {
fr = new FileWriter(f);
}
} catch (IOException e) {
// Nothing to do really.
}

try {
bw = new BufferedWriter(fr);
Iterator<String> itr = log.iterator();
bw.newLine();
while(itr.hasNext()) {
bw.write(itr.next());
bw.newLine();
}
} catch (IOException e) {
// Nothing to do really. We lost the log?
} finally {
try {
bw.close();
} catch(IOException ioe) {
// The program is closing any way.
}
}
}

最佳答案

看来您只需要确保使用平台的适当换行序列即可。您可以只说 s = s.replace("\n", System.getProperty("line.separator")) 然后将整个字符串直接写入文件。事实上,在我看来,这就是您需要的所有代码(除了异常处理,由您决定):

public void printLog() throws IOException {
final FileWriter w = new FileWriter("JServer_Log.txt", true);
try {
w.write(logTextArea.getText().replace("\n",
System.getProperty("line.separator")));
} finally { w.close(); }
}

关于java - 从 JTextPane 中选择字符串的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11262055/

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