java - 如何替换对于字符串来说太大的文件中的文本

标签 java file replace

如何替换对于字符串来说太大的文件中的文本?我一直在使用以下内容替换我见过的大多数文件中的文本:

File f = new File("test.xml");
String content = FileUtils.readFileToString(f, "UTF-8");

content = content.replaceFirst("some text", "new text");
FileUtils.writeStringToFile(f, content, "UTF-8");

这适用于正常大小的文件。但是,我得到的一些文件非常大(太大而无法存储在字符串中)并且它们会导致溢出。如何替换这些文件中的文本?

最佳答案

你可以使用sed命令来替换大文件的字符串,如下面的[Linux]

String[] cmdarr = {"bash", "-c", "sed 's/oldstring/newstring/g' input.txt > output.txt"};
Process runCmd = Runtime.getRuntime().exec(cmdarr); 

在 Windows 中你可以安装 sed,使用类似的东西

String[] cmdarr = {"cmd", "/c", "sed 's/oldstring/newstring/g' input.txt > output.txt"};
Process runCmd = Runtime.getRuntime().exec(cmdarr);

更多关于 Link

关于java - 如何替换对于字符串来说太大的文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40241704/

相关文章:

java - 简化 Tomcat 7 中的 web.xml 配置

excel - VBA宏列出多个文件夹中的文件

具有替换字符串方法的Java正则表达式

php - 使用 php 的 preg 替换从字符串中删除反斜杠\

java - 如何获取 WebElement 的父级

Java Nashorn JSObject 将函数设置为成员

java - 当应用程序失焦(非 Activity )时响应按键事件

c# - 从文件中提取字符串并使用 c# 保存在另一个文件中

python - 解决类型错误 : 'file' object has no attribute '__getitem__'

java - 从文本中删除回车符和特殊字符