如何用java中的新文件替换文本文件中的一行?

时间:2015-04-27 09:29:21

标签: java java-io

我在文本文件中有这个内容:

|0| 1 | 2 |

我想替换" |"之间的值。新的一个。我试过这个方法,但它添加了旧的修改后的新修改:

|0| 1 | 2 |new1|new2|.

而不是:

|0| new1 | new2 |

我的代码是:

public static void generateReplace(String newfield) throws FileNotFoundException, IOException {
    FileArrayProvider rs = new FileArrayProvider();
    BufferedWriter bw = new BufferedWriter(new FileWriter(new File("C:/aa.txt"), true));
    Scanner sc = new Scanner(new File("C:/test.txt"));
   // bw.write("|");
    while(sc.hasNext()){
        String line = sc.nextLine();    
        String nueva = rs.replace(line,newfield);

        bw.write(nueva);

       // bw.newLine();
    }
    bw.write("|");
    bw.close();
}

FileArrayProvider是我的类,它有Replace方法:

public String replace(String a,String newfield){
    String str = a;
        String toBeReplaced = str.substring(0, a.length());
        String resultado = str.replace(toBeReplaced, newfield);
        return resultado;

}

2 个答案:

答案 0 :(得分:0)

您要附加文件,因此无法获得所需的输出,只需将此行中的true更改为false

BufferedWriter bw = new BufferedWriter(new FileWriter(new File("/Test/src/com/aa.txt"), false));

的FileWriter public FileWriter(文件文件,           boolean append)

参数:     file - 要写入的文件对象

append - 如果为true,则将字节写入结尾      文件而不是开头

FileWriter in java

答案 1 :(得分:0)

我的回答是我不明白你为什么要替换加载数据的文件中的String

有一种更简单的方法。由于您要将所有数据加载到GUI文本框,因此您只需从文本框中获取数据并将其格式化为string并将字符串写入文件。如果您正在考虑替换同一文件中的数据,则必须调用delete(Path path)类的File方法,然后编写该文件。