gpt4 book ai didi

java - 从 Java 读取和编辑文件

转载 作者:行者123 更新时间:2023-12-02 08:42:03 27 4
gpt4 key购买 nike

我试图在现有文件的每 100 个字符处引入一个换行符。但它不会向其中写入任何内容。下面是用java编写的代码,用于读取现有文件并使用临时文件写入它。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class ReplaceFileContents {
public static void main(String[] args) {
new ReplaceFileContents().replace();
}

public void replace() {
String oldFileName = "Changed1.ldif";
String tmpFileName = "Changed2.ldif";

BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader(oldFileName));
bw = new BufferedWriter(new FileWriter(tmpFileName));
String line;
while ((line = br.readLine()) != null) {
line.replaceAll("(.{100})", "$1\n");
}
} catch (Exception e) {
return;
} finally {
try {
if(br != null)
br.close();
} catch (IOException e) {
//
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//
}
}
// Once everything is complete, delete old file..
File oldFile = new File(oldFileName);
oldFile.delete();

// And rename tmp file's name to old file name
File newFile = new File(tmpFileName);
newFile.renameTo(oldFile);

}
}

最佳答案

while ((line = br.readLine()) != null) {       
line.replaceAll("(.{100})", "$1\n");
}

首先,line.replaceAll 不会用结果替换行变量。由于字符串是不可变的,因此此方法返回新字符串,因此您的行应该是line = line.replaceAll(...

其次,您永远不会将新的String写回到文件中。使用 replaceAll 不会以任何方式更改文件本身。相反,请尝试使用 bw 对象将新的 String 写入同一行。

关于java - 从 Java 读取和编辑文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889768/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com