无法让BufferedWriter写出文件中的所有数据

rid*_*l53 0 java file-io bufferedwriter bufferedreader

我有这个函数遍历一个目录,应该读入每个文件并将其写入生成的HTML文件.BufferedReader应该正确读取,因为我在其他地方使用相同的东西.但是,在生成的HTML文件中,我只从目录中的原始文件获取所有其他数据行.这是应该完成此任务的方法:

// Tests to see if "File" is actually a directory or file,
// then writes out the file if it passes the test
void writeFiles(File directory, BufferedWriter bw) {
    try{
        for( File file : directory.listFiles() ){
            if(!file.isDirectory()) {//is a file lets read it
                FileInputStream filestream = new FileInputStream(file);
                DataInputStream in = new DataInputStream(filestream);
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String buff = new String();
                bw.write("<b>////////////////////////////////</b><br/>");
                bw.write("<b>File: " + file.getName() + "</b><br/>");
                bw.write("<b>////////////////////////////////</b><br/>");
                while((buff=br.readLine()) != null){
                    bw.write(br.readLine() + "<br/>");
                }
                bw.write("`<br/>`");
                bw.write("`<br/>`");

           }else {//will make it a recursive search
               writeFiles(file, bw);
           }
        }
    }catch(FileNotFoundException fnf){
        fnf.printStackTrace();
    }
    catch(IOException io){
        io.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我为问题中的代码格式错误道歉.由于HTML,预格式化的文本不会让我的代码正确显示.但是,我肯定认为我的代码中存在文件I/O问题.有没有人知道它是BufferedReader还是BufferedWriter?谢谢.

noo*_*ook 6

这是你的问题:

while((buff=br.readLine()) != null){
  bw.write(br.readLine() + "<br/>");
}
Run Code Online (Sandbox Code Playgroud)

你正在两次调用br.readLine().

尝试:

while((buff=br.readLine()) != null){
  bw.write(buff + "<br/>");
}
Run Code Online (Sandbox Code Playgroud)