如何在 java 中重写文本文件的特定行
How to rewrite one specific line of a text file in java
下图显示了我正在开发的网络机器人的设置文件格式。如果您查看图像中的第 31 行,您会看到它显示 chromeVersion
。这样程序就知道要使用哪个版本的 chromedriver。如果用户输入了无效的响应或将该字段留空,程序将检测到并自行确定版本,并将确定的版本保存到名为 chromeVersion
的字符串中。完成后我想用
替换该文件的第 31 行
"(31) chromeVersion(76/77/78), if you don't know this field will be filled automatically upon the first run of the bot): " + chromeVersion
明确地说,我不想重写整个文件,我只想更改文本文件中分配给 chromeVersion
的值,或者用包含的版本重写该行。
如有任何建议或方法,我们将不胜感激。
image
您将需要重写整个文件,只是文件的字节长度在您修改后保持不变。由于不能保证一定是这样,或者查起来太麻烦,这里有一个简单的过程:
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class Lab1 {
public static void main(String[] args) {
String chromVersion = "myChromeVersion";
try {
Path path = Paths.get("C:\whatever\path\toYourFile.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
int lineToModify = 31;
lines.set(lineToModify, lines.get(lineToModify)+ chromVersion);
Files.write(path, lines, StandardCharsets.UTF_8);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
请注意,这不是处理超大文件的最佳方式。但是对于你拥有的小文件来说,这不是问题。
下图显示了我正在开发的网络机器人的设置文件格式。如果您查看图像中的第 31 行,您会看到它显示 chromeVersion
。这样程序就知道要使用哪个版本的 chromedriver。如果用户输入了无效的响应或将该字段留空,程序将检测到并自行确定版本,并将确定的版本保存到名为 chromeVersion
的字符串中。完成后我想用
"(31) chromeVersion(76/77/78), if you don't know this field will be filled automatically upon the first run of the bot): " + chromeVersion
明确地说,我不想重写整个文件,我只想更改文本文件中分配给 chromeVersion
的值,或者用包含的版本重写该行。
如有任何建议或方法,我们将不胜感激。
image
您将需要重写整个文件,只是文件的字节长度在您修改后保持不变。由于不能保证一定是这样,或者查起来太麻烦,这里有一个简单的过程:
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class Lab1 {
public static void main(String[] args) {
String chromVersion = "myChromeVersion";
try {
Path path = Paths.get("C:\whatever\path\toYourFile.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
int lineToModify = 31;
lines.set(lineToModify, lines.get(lineToModify)+ chromVersion);
Files.write(path, lines, StandardCharsets.UTF_8);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
请注意,这不是处理超大文件的最佳方式。但是对于你拥有的小文件来说,这不是问题。