2014-09-05 7 views
1

파일 마녀의 내용을 지우려면 특정 확장자 file.tctl이 있어야합니다. 파일을 삭제하지 않고 파일을 변경하지 않으려합니다. 파일은 특정 모델 검사기에서 생성되므로 콘텐츠를 삭제하고 내 모델을 작성해야합니다. 나는 그런 식으로 빈 문자열을 인쇄하려고 :파일을 삭제하지 않고 파일 내용을 삭제하려면 어떻게해야합니까?

PrintWriter writer = new PrintWriter(file.tctl); writer.print(""); writer.close();

하지만 파일은 더 이상 작동하지 않습니다. 그래서 파일의 내용을 지우는 또 다른 방법이 있다면.

답변

-1

이처럼 쓰기() 메서드를 호출 :

.write((new String()).getBytes()); 

이 파일이 비어있는 것입니다.

FileOutputStream erasor = new FileOutputStream("filename.ext"); 
erasor.write((new String()).toByteArray()); 
erasor.close(); 

을하거나 그냥 코드에서 모두 인쇄를 제거 파일을

//open file in override mode 
FileOutputStream out = new FileOutputStream("filename.ext"); 
//now anything that we write here will remove the old one so just write space ("") here 
+0

도움이 되길 바랍니다.) – voxtor

+0

도움이되었습니다. D – user3417644

+0

첫 번째 제안은 컴파일되지 않습니다. 두 번째 제안은 중복됩니다. – EJP

-1

당신은 FileOutputStream 또는를 사용해야합니다 다음은 잘라 내기() 메소드가 있습니다

 
File f = new File("path-of-the-file.here"); 
FileChannel channel = new FileOutputStream(f, true).getChannel(); 
channel.truncate(0); 
channel.close(); 
+0

추측하지만 새로운 파일을 사용하는 경우, 파일이 삭제되고 새로운 파일과 동일한 이름으로 작성됩니다. 동일한 파일을 유지하고 싶습니다. – user3417644

+0

아니요, 새 파일이 디렉토리에 새 파일을 만들지 않고 java에 "파일 표현"만 만듭니다. –

+0

추가 모드를 제거하면 잘라내 기와 마찬가지로 작동합니다. 이렇게하지 않아도됩니다. – EJP

0

을 덮어하려고 : 그것은하지 작업을 수행하는 경우이 함께하려고합니다. 이미 새 FileOutputStream/PrintWriter/파일을 여는 데 사용하는 파일을 사용하여 파일을 잘라 냈습니다. I/O 또는 truncate()가 필요하지 않습니다. 추가 모드를 사용하지 마십시오.

+0

더 자세히 설명해주세요. 정확히 무슨 뜻인지 이해할 수 없나요? – user3417644

0

가장 쉬운 방법 나는

new RandomAccessFile("filename.ext", "rw").setLength(0); 
관련 문제