Java 迭代文件中的行,并在每行末尾添加null值
我试图在文件的每一行末尾添加一个关键字Java 迭代文件中的行,并在每行末尾添加null值,java,file,io,file-handling,Java,File,Io,File Handling,我试图在文件的每一行末尾添加一个关键字null(更具体地说是,null)。我尝试了下面提到的代码,但对文件没有影响。 注意:TESTFILE是一个有10行的现有文件,我必须在每行末尾追加,null final String FILENAME = "D:\\TESTFILE" FileWriter fileWriter = new FileWriter(FILENAME, true); BufferedWriter bw = new BufferedWriter(fileWriter); Fil
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");
}
}
这里的问题是,您试图在同一时间读取和写入同一个文件,这将不起作用,您需要单独执行此操作
您可以查看了解如何实现它的更多详细信息。如另一个答案中所述,请确保从一个文件读取,然后写入另一个文件。这始终是一个好主意,因为你不会在犯小错误时丢失原件。当然,您也可以在完成后删除备份文件,这取决于您
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
,我会手动复制/粘贴它;不能同时读取和写入同一文件。在写入文件之前完全读入该文件,或者写入另一个(临时)文件,删除原始文件并在写入后重命名副本。