ファイル「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();
切り捨て操作を行う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の最良のコンパニオンの1つはApache Projectsであり、参照してください。ファイル関連の操作については、Commons IOプロジェクトを参照できます。
以下の1行のコードは、ファイルを空にするのに役立ちます。
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が存在するかどうかを確認し、ファイルが存在するかどうかを確認します。空の文字列を書き込み、バッファをフラッシュします。
あなたがしなければならないすべては切り捨てモードでファイルを開くことです。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;
}