如何替换文件中的文本对于String来说太大

时间:2016-10-25 13:44:27

标签: 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");

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

4 个答案:

答案 0 :(得分:1)

尝试使用FileInputStream以行方式读取

FileInputStream fs = new FileInputStream("test.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(fs));

很抱歉,如果代码中有任何错误,我现在无法自己尝试代码

答案 1 :(得分:1)

您可以使用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

答案 2 :(得分:1)

    function SliderModel(){
        var self = this;
        self.max = ko.observable(200);
        self.min = ko.observable(0);
        self.value = ko.observable(100);
        self.step = ko.observable(10);
    }

    var sliderModel = new SliderModel();

    $(document).ready(function(){
        ko.cleanNode( document.getElementById('slider_container'));
        ko.applyBindings(SliderModel(), document.getElementById('slider_container'));
    });

答案 3 :(得分:0)

尝试使用FART(查找和替换文字) 对于Windows:fart -c big_filename.txt "find_this_text" "replace_to_this"