gpt4 book ai didi

java - 如何在java中将字符附加到某个文件 "string"

转载 作者:行者123 更新时间:2023-11-30 02:53:17 24 4
gpt4 key购买 nike

File filename =new File("D:/text.txt");

final Scanner scanner = new Scanner(filename);
while (scanner.hasNextLine()) {
final String lineFromFile = scanner.nextLine();

if(lineFromFile.contains("-----END CERTIFICATE REQUEST-----") ) {
FileWriter fw = new FileWriter(filename,true); //the true will append the new data

fw.append(",");
fw.write("wirte123");//appends the string to the file
fw.close();

System.out.println("I found " +filename.getName());
break;
}
}

但对我来说它是在新行之后添加......如下所示 enter image description here

需要如下输出文件 enter image description here

最佳答案

原始文件已包含结束新行。因此,如果您向原始文件追加某些内容,它将被写入该新行之后。

更糟糕的是,Scanner 是一个高级对象,它不允许您知道文件中内部光标可以定位的确切位置,因为它在内部读取大型缓冲区(对于证书文件,可能会一次读取整个文件)。

因此,您应该使用 RandomAccessFile 及其关联的 FileChannel 来记录每个行开头的位置,并在可能的行结束之前截断文件.

代码可能会变成:

    RandomAccessFile fw = new RandomAccessFile(filename, "rw");
FileChannel fc = fw.getChannel();
long oldpos;
while (true) {
oldpos = fc.position();
final String lineFromFile = fw.readLine();

if (lineFromFile.contains("-----END CERTIFICATE REQUEST-----")) {
System.out.println("I found " +filename.getName());*/
fc.truncate(oldpos + lineFromFile.length());
fw.writeBytes(",wirte123");//appends the string to the file
break;
}
}
fw.close();

关于java - 如何在java中将字符附加到某个文件 "string",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38008593/

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