Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java编辑或修改现有文件_Java_File - Fatal编程技术网

使用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小时前问的其他问题有什么区别。