StringBuffer替换方法不起作用

时间:2012-11-15 07:49:48

标签: java replace stringbuffer

我想用java程序读取同一文件夹中的文本文件。我有一个readFile(),用于逐行读取文件的内容。然后setName()将替换内容的一部分。我编译程序并运行没有错误。但文件的内容根本没有变化。

谢谢

public StringBuffer readFile(){ //read file line by line
        URL url = getClass().getResource("test.txt");
        File f = new File(url.getPath());
        StringBuffer sb = new StringBuffer();
        String textinLine;

        try {
            FileInputStream fs = new FileInputStream(f);
            InputStreamReader in = new InputStreamReader(fs);
            BufferedReader br = new BufferedReader(in);

         while (true){
                textinLine = br.readLine();
                if (textinLine == null) break;
                sb.append(textinLine);
            }
            fs.close();
            in.close();
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb;

    }

    public void setName(String newName){
        StringBuffer sb = readFile();       
        int pos = sb.indexOf("UserName=");
        sb.replace(pos, pos+newName.length(), newName);
    }

2 个答案:

答案 0 :(得分:1)

你必须回写文件以便它被改变,但你不改变StringBuffer的内容,你只是在阅读它。 一旦您更改了内容,您需要将新内容写入文件,如:

try{
        FileWriter fwriter = new FileWriter(YourFile);
        BufferedWriter bwriter = new BufferedWriter(fwriter);
        bwriter.write(sb.toString());
        bwriter.close();
     }
    catch (Exception e){
          e.printStackTrace();
     }

答案 1 :(得分:0)

您不会更改文件的内容,而是更改StringBuffer的内容。如果您在System.out.println(sb.ToString())方法之前和之后查看了StringBuffer(sb.replace),您会看到 的更改