Javaでファイル自体を削除せずにファイルの内容を削除する
この投稿では、Javaでファイル自体を削除せずにファイルの内容を削除する方法について説明します。
1.使用する BufferedWriter
簡単な解決策は、 BufferedWriter
とともに Files.newBufferedWriter(…) との方法 TRUNCATE_EXISTING
標準のオープンオプション。ファイルがすでに存在する場合(書き込み用に開いた場合)、ファイルを長さ0に切り捨てます。
完全な使用法は、try-with-resourceステートメント(Java 7+)を使用して以下に示されています。これは、開かれたストリームとチャネルを自動的に閉じる処理を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.io.BufferedWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class Main { public static void main(String[] args) { String fileName = "/user/data/sys.log"; try (BufferedWriter bf = Files.newBufferedWriter(Path.of(fileName), StandardOpenOption.TRUNCATE_EXISTING)) { } catch (IOException e) { e.printStackTrace(); } } } |
2.使用する PrintWriter
または、新しいものを作成することもできます PrintWriter
指定されたファイル名で。ファイルがすでに存在する場合は、サイズがゼロに切り捨てられます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.io.IOException; import java.io.PrintWriter; public class Main { public static void main(String[] args) { String fileName = "/user/data/sys.log"; try { PrintWriter pw = new PrintWriter(fileName); pw.close(); } catch (IOException e) { e.printStackTrace(); } } } |
これは、ストリームを閉じるのを処理するtry-with-resourceステートメントを含む同等のバージョンです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.io.IOException; import java.io.PrintWriter; public class Main { public static void main(String[] args) { String fileName = "/user/data/sys.log"; try (PrintWriter pw = new PrintWriter(fileName)){ } catch (IOException e) { e.printStackTrace(); } } } |
3.使用する FileChannel
The FileChannel
クラスは truncate()
指定されたサイズにファイルを切り捨てることができるメソッド。その使用法を以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class Main { public static void main(String[] args) { String fileName = "/user/data/sys.log"; try { FileChannel.open(Path.of(fileName), StandardOpenOption.WRITE) .truncate(0).close(); } catch (IOException e) { e.printStackTrace(); } } } |
4.使用する RandomAccessFile
とともに RandomAccessFile
クラスでは、を使用してファイルの長さを設定できます setLength()
方法。ファイルを切り捨てるには、以下に示すように、ファイルの長さを0として渡します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.io.IOException; import java.io.RandomAccessFile; public class Main { public static void main(String[] args) { String fileName = "/user/data/sys.log"; try (RandomAccessFile raf = new RandomAccessFile(fileName, "rw")) { raf.setLength(0); } catch (IOException e) { e.printStackTrace(); } } } |
5.使用する FileOutputStream
最後に、あなたは使用することができます FileOutputStream
ファイルが存在する場合は、長さ0に切り捨てます。このクラスの一般的な呼び出しは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.io.FileOutputStream; import java.io.IOException; public class Main { public static void main(String[] args) { String fileName = "/user/data/sys.log"; try (FileOutputStream fos = new FileOutputStream(fileName, false)) { } catch (IOException e) { e.printStackTrace(); } } } |
これで、Javaでファイル自体を削除せずにファイルの内容を削除することができます。