替换一个文件内的某个字符

Posted on 2016-06-11 17:19  上善其若水,厚德载物  阅读(260)  评论(0编辑  收藏  举报

先看这种写法:

public static void main(String[] args) throws IOException {
        
        try {
            FileReader r = new FileReader("d:/ti.txt");
        StringBuilder sb = new StringBuilder();
        char[] temp = new char[1];
        int read = r.read(temp);
        while(read!=-1){
            sb.append(temp);
        }
        String strAfter = sb.toString().replace("c", "x");
        FileWriter w = new FileWriter("d:/titi.txt");
        w.write(strAfter);
        r.close();
        w.close();
            
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

debug:

read为1所以while就成了无限循环,内存溢出了

当这样修改后:

public static void main(String[] args) throws IOException {
        
        try {
            FileReader r = new FileReader("d:/ti.txt");
        StringBuilder sb = new StringBuilder();
        char[] temp = new char[1];
        //r.read(temp)放到while的里
        while((r.read(temp))!=-1){
            sb.append(temp);
        }
        String strAfter = sb.toString().replace("c", "x");
        FileWriter w = new FileWriter("d:/titi.txt");
        w.write(strAfter);
        r.close();
        w.close();
            
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

所以,要一直取一直取一直取的应该放在while里,不能放while外

Copyright © 2024 上善其若水,厚德载物
Powered by .NET 8.0 on Kubernetes