Java 替换文本文件的一行

Java 替换文本文件的一行,java,bufferedreader,Java,Bufferedreader,我试图读取文本文件的第一行,然后用不同的内容替换该行。第一行是一个int值,所以首先我将它更改为当前值的+1 BufferedWriter writer = new BufferedWriter( new FileWriter("file.txt", true)); BufferedReader reader = new BufferedReader( new FileReader("file.txt")); String amount; amount = reader.readLine

我试图读取文本文件的第一行,然后用不同的内容替换该行。第一行是一个int值,所以首先我将它更改为当前值的+1

BufferedWriter writer = new BufferedWriter( new FileWriter("file.txt", true)); 

BufferedReader reader = new BufferedReader( new FileReader("file.txt"));

String amount;

amount = reader.readLine();

int amount1 = Integer.parseInt(amount);
amount1 = amount1 + 1;
String amount2 = String.valueOf(amount1);
amount = amount.replace(amount, amount2);

writer.write(amount);

它不是用新值替换原始值,而是在旧值旁边写入新值。

好吧,您告诉编写器通过
FileWriter的第二个构造函数参数追加而不是替换:

BufferedWriter writer = new BufferedWriter( new FileWriter("file.txt", true)); 
如果要替换文件,必须将
append
设置为false:

BufferedWriter writer = new BufferedWriter( new FileWriter("file.txt", false)); 

但是,这将替换整个文件,而不仅仅是第一行。

如果您使用的是最新版本的Java,则可以执行以下操作:

try (BufferedReader reader = new BufferedReader( new FileReader("file.txt"));
        Writer writer = new FileWriter("newfile.txt")) {
    String firstLine = reader.readLine();
    firstLine = Integer.toString(Integer.parseInt(firstLine) + 1);
    writer.writeLine(firstLine);
    reader.transferTo(writer);
}

然后用newfile.txt替换file.txt。更改文本文件时,必须替换整个文件

Path path = Paths.get("file.txt");
Charset charset = Charset.defaultCharset();
List<String> lines = Files.readAllLines(path, charset);
String firstLine = lines.get(0);
...
lines.set(0, firstLines);
Files.write(path, lines, charset);
Path Path=Path.get(“file.txt”);
Charset Charset=Charset.defaultCharset();
列表行=文件.readAllLines(路径,字符集);
字符串firstLine=lines.get(0);
...
行。设置(0,第一行);
写入(路径、行、字符集);
但是如果你注意到第一行的长度不会改变,并且有足够的空间,
您可以使用
RandomAccessFile
,只更改该文本。

文本文件不提供“替换”的概念。在替换文本文件的某些内容时,需要将该文件完全加载到内存中,将修改应用到该内存,然后将该内存作为新内容重写该文件。