使用java编辑或修改现有文件
我正在尝试修改下面现有的文件使用java编辑或修改现有文件,java,file,Java,File,我正在尝试修改下面现有的文件 User navigates to Facebook Given I am on Facebook login page Scenario: enter username as "TOM" And I enter password as "JERRY" Feature: annotation Background: User navigates to Facebook Given I am on Facebook login page Bu
User navigates to Facebook
Given I am on Facebook login page
Scenario: enter username as "TOM"
And I enter password as "JERRY"
Feature: annotation
Background:
User navigates to Facebook
Given I am on Facebook login page
But Relogin option should be available
我尝试了以下代码和文件内容变得清晰
public void addTags(File file) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String line;
BufferedWriter bw = null;
FileWriter fw = null;
int count = 0;
while ((line = bufferedReader.readLine()) != null) {
fw = new FileWriter(file);
fw.write(line);
fw.write("\n");
fw.close();
}
bufferedReader.close();
}
请纠正我。我的代码有什么问题。您的问题在这行代码中
fw = new FileWriter(file);
首先,在while循环中初始化fw。每次执行循环时,它都会重新初始化。
其次,不能读写同一个文件。您必须创建新文件、从旧文件复制、插入新数据、复制rest等。如果希望新文件的行为与已编辑的旧文件相同,则必须删除旧文件并重命名新文件。
此外,您的bw没有初始化
固定代码应如下所示:
public void addTags(File file) throws IOException {
File tmp = new File(temp.txt);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(tmp));
String line;
int count = 0;
while ((line = bufferedReader.readLine()) != null) {
if (line.trim().contains("Scenario")) {
count++;
bw.write("@tag" + count);
bw.write("\n");
}
fw.writeLine(line);
}
fw.close();
bufferedReader.close();
String newName = file.getName();
Files.delete(file);
tmp.renameTo(newName);
}
您的问题在这行代码中
fw = new FileWriter(file);
首先,在while循环中初始化fw。每次执行循环时,它都会重新初始化。
其次,不能读写同一个文件。您必须创建新文件、从旧文件复制、插入新数据、复制rest等。如果希望新文件的行为与已编辑的旧文件相同,则必须删除旧文件并重命名新文件。
此外,您的bw没有初始化
固定代码应如下所示:
public void addTags(File file) throws IOException {
File tmp = new File(temp.txt);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(tmp));
String line;
int count = 0;
while ((line = bufferedReader.readLine()) != null) {
if (line.trim().contains("Scenario")) {
count++;
bw.write("@tag" + count);
bw.write("\n");
}
fw.writeLine(line);
}
fw.close();
bufferedReader.close();
String newName = file.getName();
Files.delete(file);
tmp.renameTo(newName);
}
你必须先读文件,然后才能写 因此,首先将文件逐行读取到ArrayList中 有一种使用
文件的简单方法。readAllLines(yourPath)
在那之后,只需迭代列表并像之前一样写入文件。只是别忘了关闭BufferedWriter
我建议在try块中初始化它:
try(BufferedWriter bw=new BufferedWriter(new FileWriter(yourFile))){
//写你的文件
}
这样你就不必处理写作者的关闭
就像这样:
private static void readWrite(Path filePath) throws IOException {
List<String> allLines = Files.readAllLines(filePath);
int count = 0;
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath.toFile()))) {
for (String line : allLines) {
if (line.trim().contains("Scenario")) {
count++;
bw.write("@tag" + count);
bw.write("\n");
}
bw.write(line);
}
}
}
private static void readWrite(路径filePath)引发IOException{
列出allLines=Files.readAllLines(filePath);
整数计数=0;
try(BufferedWriter bw=new BufferedWriter(new FileWriter(filePath.toFile())){
用于(字符串行:所有行){
如果(line.trim()包含(“场景”)){
计数++;
写入(“@tag”+计数);
写入(“\n”);
}
写入(行);
}
}
}
在写入文件之前,必须先读取该文件
因此,首先将文件逐行读取到ArrayList中
有一种使用文件的简单方法。readAllLines(yourPath)
在那之后,只需迭代列表并像之前一样写入文件。只是别忘了关闭BufferedWriter
我建议在try块中初始化它:
try(BufferedWriter bw=new BufferedWriter(new FileWriter(yourFile))){
//写你的文件
}
这样你就不必处理写作者的关闭
就像这样:
private static void readWrite(Path filePath) throws IOException {
List<String> allLines = Files.readAllLines(filePath);
int count = 0;
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath.toFile()))) {
for (String line : allLines) {
if (line.trim().contains("Scenario")) {
count++;
bw.write("@tag" + count);
bw.write("\n");
}
bw.write(line);
}
}
}
private static void readWrite(路径filePath)引发IOException{
列出allLines=Files.readAllLines(filePath);
整数计数=0;
try(BufferedWriter bw=new BufferedWriter(new FileWriter(filePath.toFile())){
用于(字符串行:所有行){
如果(line.trim()包含(“场景”)){
计数++;
写入(“@tag”+计数);
写入(“\n”);
}
写入(行);
}
}
}
您在哪里初始化BufferedWriter?可能重复的我看不出与您5小时前问的其他问题有什么区别。您在哪里初始化BufferedWriter?可能重复的我看不出与您5小时前问的其他问题有什么区别。