Java替换文本文件中的行 [英] Java Replace Line In Text File
问题描述
如何替换文本文件中找到的文本行?
How do I replace a line of text found within a text file?
我有一个字符串,例如:
I have a string such as:
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) {
}
顺便说一句,我想只替换读取的行。不是整个文件。
By the way, I want to replace ONLY the line that was read. NOT the entire file.
推荐答案
经过测试和工作
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"));
String line;
StringBuffer inputBuffer = new StringBuffer();
while ((line = file.readLine()) != null) {
inputBuffer.append(line);
inputBuffer.append('\n');
}
String inputStr = inputBuffer.toString();
file.close();
System.out.println(inputStr); // check that it's inputted right
// this if structure determines whether or not to replace "0" or "1"
if (Integer.parseInt(type) == 0) {
inputStr = inputStr.replace(replaceWith + "1", replaceWith + "0");
}
else if (Integer.parseInt(type) == 1) {
inputStr = inputStr.replace(replaceWith + "0", replaceWith + "1");
}
// check if the new input is right
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");
}
原始文本文件内容:
Original Text File Content:
菜肴0
喂狗0
清理我的房间1
Do the dishes0
Feed the dog0
Cleaned my room1
输出:
做菜0 br>
喂狗0
清理我的房间1
------------------------ ----------
做菜1
喂狗0
清理我的房间1
Do the dishes0
Feed the dog0
Cleaned my room1
----------------------------------
Do the dishes1
Feed the dog0
Cleaned my room1
新文本文件内容:
做菜1
喂狗0
清理我的房间1
Do the dishes1
Feed the dog0
Cleaned my room1
并且作为注释,如果文本文件是:
And as a note, if the text file was:
做菜1
喂狗0 br>
清理我的房间1
Do the dishes1
Feed the dog0
Cleaned my room1
您使用的方法 replaceSelected(做菜 ,1);
,
它不会改变文件。
and you used the method replaceSelected("Do the dishes", "1");
,
it would just not change the file.
这篇关于Java替换文本文件中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!