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.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 에서 찾을 수 있습니다 .
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/java-delete-file-contents
'Java' 카테고리의 다른 글
Apache Commons Lang 3을 사용한 문자열 처리 (0) | 2021.03.25 |
---|---|
Spring MVC 컨트롤러에서 일반 HTML 반환 (0) | 2021.03.25 |
이미지를 Base64 문자열로 변환 (0) | 2021.03.25 |
Java에서 재귀 적으로 디렉토리 삭제 (0) | 2021.03.24 |
스프링 배치로 스프링 부트 (0) | 2021.03.24 |