如何替换文本文件中的一行文本?
我有一个字符串,例如:
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) {
}
顺便说一下,我只想替换刚才读到的那行。不是整个文件。
7条答案
按热度按时间jpfvwuh41#
在底部,我有一个替换文件中的行的通用解决方案。但首先,这是对眼前这个具体问题的答案。助手函数:
那就叫它:
原始文本文件内容:
洗碗
喂狗
打扫了我的房间
输出:
洗碗
喂狗
打扫了我的房间
eiee3dmh2#
洗碗
喂狗
打扫了我的房间
新文本文件内容:
洗碗
喂狗
打扫了我的房间
另外,如果文本文件是:
洗碗
喂狗
打扫了我的房间
你用了这个方法
replaceSelected("Do the dishes", "1");
,它不会更改文件。由于这个问题非常具体,我将在这里为将来的读者添加一个更通用的解决方案(基于标题)。
uurity8g3#
由于Java7,这是非常容易和直观的。
基本上你把整个文件读给一个
List
,编辑列表,最后将列表写回文件。FILE_PATH
表示Path
文件的一部分。btxsgosb4#
如果更换的长度不同:
读取文件,直到找到要替换的字符串。
把你要替换的文字后的部分全部读入内存。
在要替换的零件的开头截断文件。
写入替换。
写下步骤2中文件的其余部分。
如果更换件长度相同:
读取文件,直到找到要替换的字符串。
将文件位置设置为要替换的零件的开始位置。
写替换,覆盖文件的一部分。
这是你所能得到的最好的答案,你的问题有限制。然而,至少有一个例子是替换相同长度的字符串,所以第二种方法应该是可行的。
还要注意:java字符串是unicode文本,而文本文件是带有一些编码的字节。如果编码是utf8,而文本不是latin1(或纯7位ascii),则必须检查编码字节数组的长度,而不是java字符串的长度。
f8rj6qna5#
我正要回答这个问题。然后我看到它被标记为这个问题的一个副本,在我写了代码之后,所以我要在这里发布我的解决方案。
请记住,您必须重新编写文本文件。首先,我读取整个文件,并将其存储在字符串中。然后我将每一行存储为一个字符串数组的索引,例如line one=array index 0。然后编辑与要编辑的行对应的索引。完成后,我将数组中的所有字符串连接成一个字符串。然后我将新的字符串写入文件,该文件覆盖旧的内容。不要担心失去你的旧内容,因为它已被再次编写与编辑。下面是我使用的代码。
还有班级。
gcmastyq6#
您需要使用jfilechooser获取一个文件,然后使用scanner和hasnext()函数读取文件的行
http://docs.oracle.com/javase/7/docs/api/javax/swing/jfilechooser.html
一旦这样做了,就可以将行保存到变量中并操作内容。
wztqucjr7#
如何替换字符串:)正如我所做的第一个arg将是filename第二个target string第三个要替换的字符串而不是target