1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Javaで安全に一時ファイルを作成したい

Last updated at Posted at 2023-05-10

はじめに

ここ数日、コンビニ交付のシステムトラブルが世間をにぎわせています。

この記事にある川崎市のシステムを開発したベンダーからプレスリリースがでており、その内容から「一時ファイルの不適切な取扱いが原因ではないか」とSNS上ではうわさされています。

本当に一時ファイルの取り扱いが悪かったのかについては関係者しかわからないのですが、そういうSNSのやりとりを見ていて、Javaには一時ファイルを安全に作成する方法が標準で用意されていることを思い出したので、まとめておこうと思った次第です(強引)

Java6以前

Java6以前の場合はFileクラスのcreateTempFileメソッドを利用します。

またFileクラスの deleteOnExitメソッドを利用すると、JVMの終了時に作成した一時ファイルを削除することができます。

Java7以降

Java7以降の場合はFilesクラスのcreateTempFileメソッドを利用するとよいです。

Files.newBufferedWriterやFiles.newOutputStreamなどを使ってこの一時ファイルをオープンする際、OpenOptionとしてStndardOpenOption.DELETE_ON_CLOSEを指定すると、ファイルをクローズする際にファイルを削除することができます。

またFilesクラスにはcreateTempDirectoryというメソッドも用意されています。これを利用すると、安全に一時ディレクトリを作成することができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?