一時ファイルが作成されたときにファイル名に追加される乱数を制御する方法はありますか? たとえば、 File.createTempFile("abc",".pdf")
と書くと、名前がabc12323543121.pdf
のファイルが作成されます。これらの数字の代わりにタイムスタンプを付けることは可能ですか?私はこれを必要とするのは、私が作成したすべてのファイルに対して、タイムスタンプをファイルに追加する必要があり、ファイル名がかなり長くなるからです。だから、ランダムに生成された数字の代わりに、私がちょうどタイムスタンプを使うことができれば、本当に素晴らしいでしょう。Javaで作成された一時ファイルの名前を制御する
答えて
APIはこれを直接提供していないようです。しかし、File.createTempFile()
ソースコードを見て、どのように実装されているかを見てから、必要なメソッドを自分で実装することができます。
基本的にcreateTempFile()
は、目的のファイル名でFile
オブジェクトを作成し、FileSystem.createFileExclusively()
を使用してファイルを作成します。ファイルがすでに存在する場合、このメソッドはfalse
を返します。この場合、ファイル名は(別の乱数を使用して)変更され、作成が再試行されます。
同じアプローチをとることができますが、FileSystem
はパッケージのプライベートクラスなので、独自の方法で使用することはできません。代わりにFile.createNewFile()
を使用して、ファイルをアトミックに作成してください。このメソッドは、ファイルが既に存在する場合にはfalse
を返します。createTempFile()
のような同様のループで使用できるので、createFileExclusively()
メソッドを使用します。
私は両方の答えからの入力に基づいてtempディレクトリ内に新しいファイルを作成する独自のメソッドを実装しました。ありがとう。 – Adarsh
一時ファイルを作成する独自のユーティリティメソッドを作成することができます。基本的に一時ファイルは以下のようにtempディレクトリに保存されます:
public File createTempFile(String prefix, String suffix){
String tempDir = System.getProperty("java.io.tmpdir");
String fileName = (prefix != null ? prefix : "") + System.nanoTime() + (suffix != null ? suffix : "") ;
return new File(tempDir, fileName);
}
私はAndreasが提供するソリューションを使用して、あなたが提案したようにtempディレクトリにファイルをアトミックに作成しました。ありがとうございました。 – Adarsh
- 1. MooToolsで作成されたオブジェクトの数を制御する
- 2. D2のFile.tmpfileで作成された一時ファイルの名前を取得する方法は?
- 3. 制御ファイルの作成時に構文エラーが発生する
- 4. アップロード中の画像:一時ファイル/名前が作成されていません
- 5. WCF - デシリアライズ時の名前空間を制御する
- 6. 動的に作成されたコンテナを制御する
- 7. 一時的なASP.NETファイルのサイズを制御する方法は?
- 8. FileSystemWatcher:作成された一時ファイルとゴーストファイルを無視する
- 9. CWE-73:ファイル名またはパスの外部制御Veracode Javaソリューション
- 10. 生成されたgoファイルの名前
- 11. 一時ファイルを作成して実際のファイルに名前を変更
- 12. Celeryで作成された一時キュー
- 13. コミット時にその名前が変更された場合、Javaファイルの名前を取得する方法は?
- 14. Javaで一時フォルダを作成する
- 15. Javaで制御フローを生成するためのツール
- 16. VS2008アイテムテンプレートが作成時にファイル名に名前変更されない
- 17. bashで一時ファイルを作成する
- 18. django-reversionで制御されたオブジェクトの以前のバージョン
- 19. Laravelファイルアップロードで一時ファイル付きのフォルダが作成される
- 20. 名前の変更Pythonの一時ファイル
- 21. OpenEJBでステートレスセッションBeanの名前を制御する
- 22. MONIT:MONIT制御ファイルで構成されたとしてサービス名は大文字にされていない
- 23. Paperclip - アップロードされたファイル名の中でアンダースコアにエスケープ/変更される文字を制御する方法は?
- 24. webpackHtmlPlugin:注入されたファイルの順序を制御する
- 25. 一度作成された0KBのファイルJavaでFTPが行われました
- 26. 独立して制御できる同一のImageViewをプログラムで作成する
- 27. ダイナミックリンクのダイナミックに作成された名前を取得する
- 28. 計算された名前のjavascriptオブジェクトを作成する
- 29. .NET SoapFormatterで名前空間を制御する方法は?
- 30. 生成されたJAXB列挙を制御する方法
通常の方法ではなく、一時ファイルとしてファイルを作成する理由はありますか?そうすれば、あなたは自分の名前を完全にコントロールすることができます。 – Philipp
'createTempFile()'は、1秒間に1000回呼び出したとしても、このファイル名を一意にするためにresposibleです。接頭辞や後置詞を追加できる必要があります。 –
@Philipp通常の方法で実装しましたが、システムの一時ディレクトリ(createTempFileメソッドに多少似ていますが、ランダムな命名規則をより詳細に制御します)で実装しました。 – Adarsh