在java中创建,编写和编辑相同的文本文件

Vla*_*che 6 java file-io text-files

假设我有以下代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class EditFile {

    public static void main(String[] args) {

        try{
            String verify, putData;
            File file = new File("file.txt");
            file.createNewFile();
            FileWriter fw = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write("Some text here for a reason");
            bw.flush();
            bw.close();
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            while( br.readLine() != null ){
                verify = br.readLine();
                if(verify != null){
                    putData = verify.replaceAll("here", "there");
                    bw.write(putData);
                }
            }
            br.close();


        }catch(IOException e){
        e.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我想做的就是在文本文件中写一些东西,在我的例子中"有些文字出于某种原因".然后从我的文件中读取数据,最后从我的文件中更改我的文本中的"有些文本出于某种原因"在"有些文本中出于某种原因".我运行了代码,但所有这一切都是在我的文件中写入"有些文字出于某种原因".

我试图弄清楚我的代码中可能出现的问题,但不幸的是,这是徒劳的.任何建议或改写都非常感谢我.

Yeh*_*wad 7

将您的代码更改为:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class EditFile {

    public static void main(String[] args) {

        try{
            String verify, putData;
            File file = new File("file.txt");
            file.createNewFile();
            FileWriter fw = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write("Some text here for a reason");
            bw.flush();
            bw.close();
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);

            while( (verify=br.readLine()) != null ){ //***editted
                       //**deleted**verify = br.readLine();**
                if(verify != null){ //***edited
                    putData = verify.replaceAll("here", "there");
                    bw.write(putData);
                }
            }
            br.close();


        }catch(IOException e){
        e.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

问题是你正在调用br.readLine()两次,这会激发应用程序读取line1然后是line2,在你的情况下,你只有一行,这意味着你的程序以条件形式读取它,并且当它将它声明为变量时verify,它正在停止,因为您没有更多数据来读取您的文件.