2017-10-09 1 views
1

파일의 각 행 끝에 null (보다 구체적으로 ,null)이라는 키워드를 추가하려고합니다. 아래에 언급 된 코드를 시도했지만 파일에는 영향을주지 않습니다. 참고 : TESTFILE은 10 줄이있는 기존 파일이므로 각 줄의 끝에 ,null을 추가해야합니다.파일의 행을 반복하고 각 행 끝에 null 값을 추가하십시오.

final String FILENAME = "D:\\TESTFILE" 
FileWriter fileWriter = new FileWriter(FILENAME, true); 
BufferedWriter bw = new BufferedWriter(fileWriter); 
FileReader fileReader = new FileReader(FILENAME); 
BufferedReader br = new BufferedReader(fileReader); 
PrintWriter printWriter = new PrintWriter(bw); 
String line; 

while ((line = br.readLine()) != null) { 
     printWriter.println(",null"); 
    } 
} 
+0

시도 printWriter.println (line + ", null"); –

+1

같은 파일을 동시에 읽고 쓸 수 없습니다. 작성하기 전에 파일을 완전히 읽거나 다른 (임시) 파일에 쓰거나 원본을 삭제하고 작성한 후 복사본의 이름을 바꿉니다. –

답변

3

여기서 문제가 읽고 같은 시간에 같은 파일에 기록하려고하는 것입니다,이 작동하지 않습니다 별도로이 작업을 수행해야합니다.

  1. 파일을 읽으십시오.
  2. 각 줄 내용을 업데이트하십시오.
  3. 업데이트 된 행을 새 임시 파일에 저장하십시오.
  4. 모든 임시 파일을 저장하고 모든 파일을 읽은 후 원본 파일을 제거하십시오.
  5. 마지막으로 임시 파일의 이름을 원래 파일 이름으로 바꿉니다.

당신은 그것을 구현하는 방법에 대한 자세한 내용은 Modifying existing file content in Java를 확인할 수 있습니다.

0

다른 답변에서 설명한 것처럼 한 파일을 읽고 다른 파일에 쓰기를해야합니다. 작은 실수를 저 지르지 않으면 원래의 것을 풀지 않는 것이 항상 좋은 생각입니다. 물론 완료된 백업 파일을 삭제할 수도 있습니다. 백업 파일은 귀하에게 달려 있습니다.

import java.io.IOException; 
import java.io.PrintWriter; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.nio.file.StandardCopyOption; 
import java.nio.file.StandardOpenOption; 

public class Modify { 
    public void modify(Path file, String append) throws IOException { 
     Path backup = file.resolveSibling(file.getFileName().toString() + "~"); 
     Files.move(file, backup, StandardCopyOption.REPLACE_EXISTING); 

     try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(file, StandardOpenOption.CREATE))) { 
      Files.lines(backup) 
       .map(l -> l.concat(append)) 
       .forEach(writer::println); 
     } 
    } 

    public static void main(String... args) throws IOException { 
     new Modify().modify(Paths.get("/path/to/whatever"), ",null"); 
    } 
} 

는하지만, 솔직히, 10 선 파일에 ,null을 추가, 나는 그것을 붙여 넣기/복사하여 수동으로 그렇게 할 것입니다.

관련 문제