我正在尝试用java编辑文件。
我想用"
转义文件中的每一个引号"我试过这样做(关于stackoverflow的其他解决方案,我可以复制哪些代码):
public void replaceInFile(File file) throws IOException {
File tempFile = new File("twittergeoUpdate.csv");
FileWriter fw = new FileWriter(tempFile);
Reader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while (br.ready()) {
fw.write(br.readLine().replaceAll(""", "\"") + "n");
}
fw.close();
br.close();
fr.close();
}
我太快了…这对我不起作用。引语就留在我的档案里吧。有什么想法吗?
\"
只转义"
(双引号),您还必须转义反斜杠,因此您需要5个反斜杠。\\"
s.replaceAll(""", "\\"")
您应该使用Apache commons-lang
包中的StringEscapeUtils#escapeJava()
。
:
org.apache.commons.lang.StringEscapeUtils.escapeJava(<yourStringLiteralHere>)
从javadoc :
StringEscapeUtils#escapeJava()
使用Java
字符串规则转义字符串中的字符。
正确处理引号和控制字符(tab,反斜杠,cr, ff等)
制表符变成了字符''和't'。
Java
字符串和JavaScript
字符串的唯一区别是,在JavaScript
中,单引号必须转义。
:
- 输入字符串:他没有说,"停!"
- 输出字符串:他没有说,"Stop!" "
I code:
public void replaceInFile(File file) throws IOException {
File tempFile = new File("twittergeoUpdate.csv");
FileWriter fw = new FileWriter(tempFile);
Reader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while (br.ready()) {
fw.write(br.readLine().replaceAll(""", "\\"") + "n");
}
fw.close();
br.close();
fr.close();
}//replaceInFile
正确的替换字符串是\"(5反斜杠,不是3)
基本的问题是,您不能写入正在读取的文件而不期望它发生更改。在您的示例中,FileWriter做的第一件事是截断文件。我看到过一些例子,读者仍然设法读取一些东西,但它是损坏的。
你必须写一个临时文件,关闭两个文件,完成后用临时文件替换(使用删除和重命名)原始文件