如何删除文本文件中的特定字符串?

use*_*639 0 java file-io

如何删除文本文件中的特定字符串?

Bal*_*usC 21

找到该文件.

File file = new File("/path/to/file.txt");
Run Code Online (Sandbox Code Playgroud)

创建一个临时文件(否则你首先要将所有内容都读入Java的内存).

File temp = File.createTempFile("file", ".txt", file.getParentFile());
Run Code Online (Sandbox Code Playgroud)

确定字符集.

String charset = "UTF-8";
Run Code Online (Sandbox Code Playgroud)

确定要删除的字符串.

String delete = "foo";
Run Code Online (Sandbox Code Playgroud)

打开文件进行阅读.

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset));
Run Code Online (Sandbox Code Playgroud)

打开临时文件进行写入.

PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp), charset));
Run Code Online (Sandbox Code Playgroud)

逐行读取文件.

for (String line; (line = reader.readLine()) != null;) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

从行中删除字符串.

    line = line.replace(delete, "");
Run Code Online (Sandbox Code Playgroud)

将其写入临时文件.

    writer.println(line);
Run Code Online (Sandbox Code Playgroud)

关闭阅读器和写入器(最好在finally块中).

reader.close();
writer.close();
Run Code Online (Sandbox Code Playgroud)

删除文件.

file.delete();
Run Code Online (Sandbox Code Playgroud)

重命名临时文件.

temp.renameTo(file);
Run Code Online (Sandbox Code Playgroud)

也可以看看:

  • @kyleengland:因为文本文件不是关系数据库. (2认同)