一時ファイルが作成されたときにファイル名に追加される乱数を制御する方法はありますか? たとえば、 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. WCF - デシリアライズ時の名前空間を制御する
- 4. 動的に作成されたコンテナを制御する
- 5. FileSystemWatcher:作成された一時ファイルとゴーストファイルを無視する
- 6. 生成されたgoファイルの名前
- 7. 一時的なASP.NETファイルのサイズを制御する方法は?
- 8. Celeryで作成された一時キュー
- 9. Javaで一時フォルダを作成する
- 10. VS2008アイテムテンプレートが作成時にファイル名に名前変更されない
- 11. bashで一時ファイルを作成する
- 12. 名前の変更Pythonの一時ファイル
- 13. Javaで制御フローを生成するためのツール
- 14. django-reversionで制御されたオブジェクトの以前のバージョン
- 15. 一度作成された0KBのファイルJavaでFTPが行われました
- 16. Paperclip - アップロードされたファイル名の中でアンダースコアにエスケープ/変更される文字を制御する方法は?
- 17. OpenEJBでステートレスセッションBeanの名前を制御する
- 18. webpackHtmlPlugin:注入されたファイルの順序を制御する
- 19. 計算された名前のjavascriptオブジェクトを作成する
- 20. .NET SoapFormatterで名前空間を制御する方法は?
- 21. pdf()によって作成された一時ファイルを削除する
- 22. Antでファイル名にランダムに生成された文字列を含む一時ファイルをコピーする
- 23. フォーマットされたファイルを作成してJavaで印刷する
- 24. コードで制御配列を作成
- 25. シリアル化されたASP.Net Ajaxオブジェクトのプロパティ名の制御
- 26. NDKでAndroidに一時ファイルを作成
- 27. マウスで制御されたシェイプ描画
- 28. 名前付きパイプ(STDIN/STDOUTではなく)でIRBを制御
- 29. Javaを使用してシステムを一時的に制御します
- 30. 名前を変更tycho-p2-director-pluginによって作成されたZIPファイル
通常の方法ではなく、一時ファイルとしてファイルを作成する理由はありますか?そうすれば、あなたは自分の名前を完全にコントロールすることができます。 – Philipp
'createTempFile()'は、1秒間に1000回呼び出したとしても、このファイル名を一意にするためにresposibleです。接頭辞や後置詞を追加できる必要があります。 –
@Philipp通常の方法で実装しましたが、システムの一時ディレクトリ(createTempFileメソッドに多少似ていますが、ランダムな命名規則をより詳細に制御します)で実装しました。 – Adarsh