1. 소개

이 예제에서는 Java를 사용하여 파일 자체를 삭제하지 않고 파일 내용을 삭제하는 방법을 살펴 봅니다. 간단한 방법이 많기 때문에 하나씩 살펴 보겠습니다.

2. PrintWriter 사용

Java의 PrintWriter 클래스는 Writer  클래스를 확장합니다 . 개체의 형식화 된 표현을 텍스트 출력 스트림에 인쇄합니다.

간단한 테스트를 수행합니다. 기존 파일을 가리키는 PrintWriter 인스턴스를 만들고 파일을 닫아서 파일의 기존 내용을 삭제 한 다음 파일 길이가 비어 있는지 확인합니다.

new PrintWriter(FILE_PATH).close();
assertEquals(0, StreamUtils.getStringFromInputStream(new FileInputStream(FILE_PATH)).length());

또한 추가 처리를 위해 PrintWriter 개체 가 필요하지 않은 경우 이것이 최선의 옵션입니다. 그러나 추가 파일 작업을 위해 PrintWriter 개체 가 필요한 경우 이를 다르게 수행 할 수 있습니다.

PrintWriter writer = new PrintWriter(FILE_PATH);
writer.print("");
// other operations
writer.close();

3. FileWriter 사용

Java의 FileWriter 는 문자 지향 데이터를 파일에 쓰는 방법을 제공하는 표준 Java IO API 클래스입니다.

이제 FileWriter를 사용하여 동일한 작업을 수행하는 방법을 살펴 보겠습니다  .

new FileWriter(FILE_PATH, false).close();

마찬가지로 추가 처리를 위해  FileWriter 개체 가 필요한 경우 변수에 할당하고 빈 문자열로 업데이트 할 수 있습니다.

4. FileOutputStream 사용

Java의  FileOutputStream 은 바이트 데이터를 파일에 쓰는 데 사용되는 출력 스트림입니다.

이제 FileOutputStream을 사용하여 파일의 내용을 삭제 해 보겠습니다 .

new FileOutputStream(FILE_PATH).close();

5. Apache Commons IO  FileUtils 사용

Apache Commons IO 는 일반적인 IO 문제를 해결하는 데 도움이되는 유틸리티 클래스가 포함 된 라이브러리입니다. 유틸리티 클래스 중 하나 인 FileUtils를 사용하여 파일의 내용을 삭제할 수 있습니다  .

이것이 어떻게 작동하는지보기 위해 Apache Commons IO 의존성을  pom.xml에 추가해 보겠습니다 .

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

그런 다음 파일 콘텐츠 삭제를 보여주는 간단한 예를 살펴 보겠습니다.

FileUtils.write(new File(FILE_PATH), "", Charset.defaultCharset());

6. Java NIO 파일 사용

Java NIO 파일  은 JDK 7에서 도입되었습니다. 파일, 파일 속성 및 파일 시스템에 액세스하기위한 인터페이스와 클래스를 정의합니다.

java.nio.file.Files를 사용하여 파일 내용을 삭제할 수도 있습니다 .

BufferedWriter writer = Files.newBufferedWriter(Paths.get(FILE_PATH));
writer.write("");
writer.flush();

7. Java NIO FileChannel 사용

Java NIO FileChannel은 파일을 연결하기위한 NIO의 구현입니다. 또한 표준 Java IO 패키지를 보완합니다 .

java.nio.channels.FileChannel을 사용하여 파일 내용을 삭제할 수도 있습니다 .

FileChannel.open(Paths.get(FILE_PATH), StandardOpenOption.WRITE).truncate(0).close();

8. 구아바 사용

Guava 는 I / O 작업을 수행하는 유틸리티 메서드를 제공하는 오픈 소스 Java 기반 라이브러리입니다. Guava API를 사용하여 파일 내용을 삭제하는 방법을 살펴 보겠습니다.

먼저 pom.xml에 Guava 의존성 을 추가해야합니다  .

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>22.0</version>
</dependency>

그런 다음 Guava를 사용하여 파일 내용을 삭제하는 간단한 예를 살펴 보겠습니다.

File file = new File(FILE_PATH);
byte[] empty = new byte[0];
com.google.common.io.Files.write(empty, file);

9. 결론

요약하면 파일 자체를 삭제하지 않고 파일 내용을 삭제하는 여러 방법을 보았습니다.

이 예제의 전체 구현은 GitHub 에서 찾을 수 있습니다  .