파일 'A'의 내용을 파일 'B'에 복사하고 싶습니다. 복사가 끝나면 파일 'A'의 내용을 지우고 처음부터 쓰고 싶습니다. 다른 작업과 관련된 파일 'A'를 삭제할 수 없습니다.
Java의 파일 API (readLine ())를 사용하여 내용을 복사 할 수 있었지만 파일 내용을 지우고 파일 포인터를 파일 시작 부분으로 설정하는 방법을 모릅니다.
답변:
빈 문자열을 파일에 인쇄하십시오.
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
파일에 빈 문자열을 쓸 필요조차 없다고 생각합니다.
PrintWriter pw = new PrintWriter("filepath.txt");
pw.close();
new PrintWriter("filepath.txt").close();어때?
RandomAccessFile 클래스에서 setLength () 메서드를 원합니다.
간단하고 아무것도 쓰지 마십시오!
FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();
자르기 작업을위한 하나의 라이너 :
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"), "")
사용 : 새로운 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가 존재하는지 확인하고, 파일이 존재하는지 확인하고, 빈 문자열을 쓰고 버퍼를 플러시하며, 결국에는 빈 파일을 가리키는 작성자를 얻습니다
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");
당신이해야 할 일은 자르기 모드에서 파일을 여는 것입니다. 모든 Java 파일 출력 클래스는 자동으로이를 수행합니다.
일반적인 방법을 다음과 같이 작성할 수 있습니다 (너무 늦었지만 아래 코드는 당신 / 다른 사람들을 도울 것입니다)
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;
}