我正在尝试在文件的每一行末尾添加关键字null
(更具体的,null
)。我尝试了下面提到的代码但对文件没有影响。
注意:TESTFILE
是一个包含10行的现有文件,我必须在每行的末尾添加,null
。
final String FILENAME = "D:\\TESTFILE"
FileWriter fileWriter = new FileWriter(FILENAME, true);
BufferedWriter bw = new BufferedWriter(fileWriter);
FileReader fileReader = new FileReader(FILENAME);
BufferedReader br = new BufferedReader(fileReader);
PrintWriter printWriter = new PrintWriter(bw);
String line;
while ((line = br.readLine()) != null) {
printWriter.println(",null");
}
}
答案 0 :(得分:3)
这里的问题是你试图在同一时间读取和写入同一个文件,这不起作用,你需要单独完成。
您可以查看 Modifying existing file content in Java ,了解有关如何实施的详细信息。
答案 1 :(得分:0)
如另一个答案中所述,请确保您从一个文件中读取并写入另一个文件。这总是一个好主意,因为你在犯小错误时不会松动原件。当然,您也可以在完成后删除备份文件,这取决于您。
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;
public class Modify {
public void modify(Path file, String append) throws IOException {
Path backup = file.resolveSibling(file.getFileName().toString() + "~");
Files.move(file, backup, StandardCopyOption.REPLACE_EXISTING);
try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(file, StandardOpenOption.CREATE))) {
Files.lines(backup)
.map(l -> l.concat(append))
.forEach(writer::println);
}
}
public static void main(String... args) throws IOException {
new Modify().modify(Paths.get("/path/to/whatever"), ",null");
}
}
但是,老实说,在10行文件中添加,null
,我会手动复制/粘贴它。