source

텍스트 파일 내용을 삭제하지 않고 삭제하는 방법

manysource 2022. 10. 15. 09:58

텍스트 파일 내용을 삭제하지 않고 삭제하는 방법

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