2012-07-11 48 views
0

我有這個函數遍歷一個目錄,應該讀入每個文件並將其寫出到生成的HTML文件中。 BufferedReader應該正確讀入,因爲我在其他地方使用相同的東西。但是,在生成的HTML文件中,我只能從目錄中的原始文件中獲取其他每行數據。這是應該做到這一點的方法:無法讓BufferedWriter從文件中寫出所有數據

// 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(); 
    } 
} 

我很抱歉代碼在問題中的格式不正確。由於HTML,預先格式化的文本不會讓我的代碼正確顯示。不過,我絕對認爲我的代碼中存在File I/O問題。有沒有人知道它是BufferedReader還是BufferedWriter?謝謝。

+0

您應該聲明字符串的buff是這樣的:'字符串的buff;'。你不應該初始化它,因爲它總是被覆蓋在這裏:'(buff = br.readLine())' – 2012-07-11 19:47:57

回答

6

這裏是你的問題:

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

要調用br.readLine()的兩倍。

嘗試:

while((buff=br.readLine()) != null){ 
    bw.write(buff + "<br/>"); 
} 
+1

就像一個魅力。謝謝。 – ridecontrol53 2012-07-12 13:25:34

相關問題