2012-07-11 2 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 때문에 미리 형식화 된 텍스트로 인해 내 코드가 제대로 표시되지 않습니다. 그러나 필자는 코드에서 파일 I/O 문제가 있다고 생각합니다. 누구든지 BufferedReader 또는 BufferedWriter인지 여부를 알 수 있습니까? 감사. 두 번

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

당신은 br.readLine를 호출() :

+0

당신은이 같은 문자열 버프 선언해야합니다 : '문자열 버프;'. 다음과 같이 항상 덮어 쓰기 때문에 초기화하지 말아야합니다.'(buff = br.readLine()) –

답변

6

는 여기에 귀하의 문제입니다.

시도 :

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

매력처럼 작동합니다. 감사. – ridecontrol53

관련 문제