2014-05-09 3 views
3

PrintWriter를 사용하여 많은 .println() 문을 사용하여 파일에 텍스트를 쓰는 Java 프로그램이 있는데 모든 것이 정상적으로 작동합니다. 내가 알고 싶은 것은 출력 파일의 특정 줄에 쓰는 방법이 있습니까?Java PrintWriter를 사용하여 특정 행에 쓸 수있는 방법이 있습니까?

예 : 내 프로그램이 10 개의 .println() 문을 사용하여 출력 파일에 10 줄을 쓰는 경우. 내 프로그램이 끝날 때 파일의 3 행째 줄에 줄을 쓰고 나머지 7 줄을 한 줄씩 줄여 새로운 3 단을 만들 수있는 방법이 있습니까? 선?

모든 도움을 주시면 감사하겠습니다. 미리 감사드립니다. 스티븐.

답변

2

이렇게 할 수 있지만 부딪히면됩니다.

가장 간단한 해결책은 필요한 추가 줄을 사용하여 파일을 다시 쓰는 것입니다.

또는 RandomAccessFile을 사용하면 세 번째 줄을 검색하고 파일의 모든 데이터를 복사 한 다음 추가 할 줄을 삽입 할 수 있습니다.

2

아니요, PrintWriter은 파일을 덮어 쓰거나 끝에 추가 할 수 있습니다.

줄을 "덮어 쓰면"새 줄의 길이가 원본과 다를 수 있으므로 줄 뒤의 모든 내용을 이동해야하므로 PrintWriter 할 수 없습니다.

1

PrintWriter는 그렇게 할 수있을뿐만 아니라 인쇄 할 수 없습니다. 다른 모든 Writer 및 OutputStream도이를 수행 할 수 없습니다. 랜덤 액세스 채널조차도 (자체적으로) 할 수 없습니다.

"a line"에는 특정 길이가 없기 때문입니다. 추가적으로, 만약 당신이 무언가를 삽입하고 싶다면, 그 다음에 오는 모든 것을 옮겨야 할 것입니다.

스트림을 다시 배치하고 그 내용을 덮어 쓰면됩니다.

관련 문제