1

我想用我的 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);
    }
4

2 回答 2

1

您必须写回文件以使其更改,但您不会更改 StringBuffer 的内容,您只是在读取它。更改内容后,您需要将新内容写入文件,例如:

try{
        FileWriter fwriter = new FileWriter(YourFile);
        BufferedWriter bwriter = new BufferedWriter(fwriter);
        bwriter.write(sb.toString());
        bwriter.close();
     }
    catch (Exception e){
          e.printStackTrace();
     }
于 2012-11-15T07:51:17.383 回答
0

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

于 2012-11-15T07:54:08.953 回答