텍스트 파일 내용을 삭제하지 않고 삭제하는 방법
A파일의 내용을 B파일로 복사하고 복사 후 A파일의 내용을 지우고 처음부터 쓰고 싶습니다.'A' 파일은 다른 작업과 관련된 것이므로 삭제할 수 없습니다.
java의 파일 API(readLine())를 사용하여 내용을 복사할 수 있었지만 파일 내용을 지우고 파일 포인터를 파일 선두에 설정하는 방법을 알지 못했습니다.
빈 문자열을 파일에 인쇄하기만 하면 됩니다.
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
파일에 빈 문자열을 쓸 필요조차 없다고 생각합니다.
PrintWriter pw = new PrintWriter("filepath.txt");
pw.close();
random Access File 클래스의 setLength() 메서드를 사용합니다.
간단해, 아무것도 쓰지 마!
FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();
잘라내기 작동을 위한 라이너 1개:
FileChannel.open(Paths.get("/home/user/file/to/truncate"), StandardOpenOption.WRITE).truncate(0).close();
상세한 것에 대하여는, Java 의 메뉴얼을 참조해 주세요.https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html
java의 가장 좋은 동반자 중 하나는 Apache Projects입니다.참조해 주세요.파일 관련 작업은 Commons IO 프로젝트를 참조할 수 있습니다.
아래 한 줄 코드를 사용하면 파일을 비울 수 있습니다.
FileUtils.write(new File("/your/file/path"), "")
아래는 어떻습니까?
File temp = new File("<your file name>");
if (temp.exists()) {
RandomAccessFile raf = new RandomAccessFile(temp, "rw");
raf.setLength(0);
}
A에서 B로 복사한 후 파일 A를 다시 열어 쓰기 모드로 만든 다음 빈 문자열을 씁니다.
그냥 쓰세요:
FileOutputStream writer = new FileOutputStream("file.txt");
파일에 빈 문자열을 쓴 후 플러시하고 닫습니다.파일 라이터가 추가 모드가 아닌지 확인합니다.내 생각엔 그게 효과가 있을 것 같아.
나중에 라이터를 사용할 필요가 없다면 가장 짧고 깔끔한 방법은 다음과 같습니다.
new FileWriter("/path/to/your/file.txt").close();
using : 새로운 Java 7 NIO 라이브러리를 사용하여 시도합니다.
if(!Files.exists(filePath.getParent())) {
Files.createDirectory(filePath.getParent());
}
if(!Files.exists(filePath)) {
Files.createFile(filePath);
}
// Empty the file content
writer = Files.newBufferedWriter(filePath);
writer.write("");
writer.flush();
위의 코드는 디렉토리가 생성되지 않은 경우 Directoty가 존재하는지 여부를 확인하고 파일이 존재하는지 여부를 체크하며 빈 문자열을 쓰고 버퍼를 플러시합니다.결국 라이터가 빈 파일을 가리키게 됩니다.
잘라내기 모드에서 파일을 열기만 하면 됩니다.Java 파일 출력 클래스는 자동으로 실행됩니다.
사용할 수 있습니다.
FileWriter fw = new FileWriter(/*your file path*/);
PrintWriter pw = new PrintWriter(fw);
pw.write("");
pw.flush();
pw.close();
사용하지 말 것
FileWriter fw = new FileWriter(/*your file path*/,true);
파일 라이터 컨스트럭터에서 true는 append를 활성화합니다.
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");
리소스 사용 시도 기록기가 자동으로 닫힙니다.
import org.apache.commons.lang3.StringUtils;
final File file = new File("SomeFile");
try (PrintWriter writer = new PrintWriter(file)) {
writer.print(StringUtils.EMPTY);
}
// here we can be sure that writer will be closed automatically
범용 메서드는 다음과 같이 쓸 수 있습니다(너무 늦었지만 아래 코드는 도움이 됩니다).
public static FileInputStream getFile(File fileImport) throws IOException {
FileInputStream fileStream = null;
try {
PrintWriter writer = new PrintWriter(fileImport);
writer.print(StringUtils.EMPTY);
fileStream = new FileInputStream(fileImport);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
writer.close();
}
return fileStream;
}
언급URL : https://stackoverflow.com/questions/6994518/how-to-delete-the-content-of-text-file-without-deleting-itself
'source' 카테고리의 다른 글
중복된 키를 사용한 맵 구현 (0) | 2022.10.15 |
---|---|
"u" 및 "r" 문자열 프리픽스는 정확히 어떤 역할을 하며 raw 문자열 리터럴은 무엇입니까? (0) | 2022.10.15 |
함수에서 키워드 사용 - PHP (0) | 2022.10.15 |
openssl_encrypt에서의 초기화 벡터 사용 (0) | 2022.10.14 |
N 이하의 모든 소수를 나열하는 가장 빠른 방법 (0) | 2022.10.14 |