gpt4 book ai didi

Java替换文本文件中的行

转载 作者:IT老高 更新时间:2023-10-28 21:13:55 26 4
gpt4 key购买 nike

如何替换文本文件中的一行文本?

我有一个字符串,例如:

Do the dishes0

我想更新它:

Do the dishes1

(反之亦然)

我该如何做到这一点?

ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JCheckBox checkbox = (JCheckBox) e.getSource();
if (checkbox.isSelected()) {
System.out.println("Selected");
String s = checkbox.getText();
replaceSelected(s, "1");
} else {
System.out.println("Deselected");
String s = checkbox.getText();
replaceSelected(s, "0");
}
}
};

public static void replaceSelected(String replaceWith, String type) {

}

顺便说一句,我只想替换已读取的行。不是整个文件。

最佳答案

在底部,我有一个替换文件中行的通用解决方案。但首先,这里是手头具体问题的答案。辅助函数:

public static void replaceSelected(String replaceWith, String type) {
try {
// input the file content to the StringBuffer "input"
BufferedReader file = new BufferedReader(new FileReader("notes.txt"));
StringBuffer inputBuffer = new StringBuffer();
String line;

while ((line = file.readLine()) != null) {
inputBuffer.append(line);
inputBuffer.append('\n');
}
file.close();
String inputStr = inputBuffer.toString();

System.out.println(inputStr); // display the original file for debugging

// logic to replace lines in the string (could use regex here to be generic)
if (type.equals("0")) {
inputStr = inputStr.replace(replaceWith + "1", replaceWith + "0");
} else if (type.equals("1")) {
inputStr = inputStr.replace(replaceWith + "0", replaceWith + "1");
}

// display the new file for debugging
System.out.println("----------------------------------\n" + inputStr);

// write the new string with the replaced line OVER the same file
FileOutputStream fileOut = new FileOutputStream("notes.txt");
fileOut.write(inputStr.getBytes());
fileOut.close();

} catch (Exception e) {
System.out.println("Problem reading file.");
}
}

然后调用它:

public static void main(String[] args) {
replaceSelected("Do the dishes", "1");
}

原始文本文件内容:

Do the dishes0
Feed the dog0
Cleaned my room1

输出:

Do the dishes0
Feed the dog0
Cleaned my room1
----------------------------------
Do the dishes1
Feed the dog0
Cleaned my room1

新的文本文件内容:

Do the dishes1
Feed the dog0
Cleaned my room1


请注意,如果文本文件是:

Do the dishes1
Feed the dog0
Cleaned my room1

你使用了 replaceSelected("Do the bowls", "1"); 方法,它不会改变文件。


由于这个问题非常具体,我将在这里为 future 的读者添加一个更通用的解决方案(根据标题)。

// read file one line at a time
// replace line as you read the file and store updated lines in StringBuffer
// overwrite the file with the new lines
public static void replaceLines() {
try {
// input the (modified) file content to the StringBuffer "input"
BufferedReader file = new BufferedReader(new FileReader("notes.txt"));
StringBuffer inputBuffer = new StringBuffer();
String line;

while ((line = file.readLine()) != null) {
line = ... // replace the line here
inputBuffer.append(line);
inputBuffer.append('\n');
}
file.close();

// write the new string with the replaced line OVER the same file
FileOutputStream fileOut = new FileOutputStream("notes.txt");
fileOut.write(inputBuffer.toString().getBytes());
fileOut.close();

} catch (Exception e) {
System.out.println("Problem reading file.");
}
}

关于Java替换文本文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039980/

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