Java関数createTempFile("test", "test")
を呼び出す際に「システムが指定されたパスを見つけることができません」という例外が発生しました。 グーグルで試してみましたが運がありません。 Javaがデフォルトの一時パスを取得する場所を知っている人はいますか? Windows変数が正しいと思われ、それらを変更してもjavaには影響しません。createTempFile中にシステムがパスを見つけることができません
答えて
誰でもJavaはそれが
java.io.tmpdir
プロパティから読み込まれ、デフォルトの一時パス
を取得する場所から知っています。
Files.createTempFile("test", "test");
は、本質的に再びjava.nio.file.TempFileHelper.create(dir, prefix, suffix, false, attrs);
を呼び出しjava.nio.file.TempFileHelper.createTempFile(null, prefix, suffix, attrs);
呼び出します。 dir
がnullの場合があり、次のように宣言されているtmpdir
に設定されています:
private static final Path tmpdir =
Paths.get(doPrivileged(new GetPropertyAction("java.io.tmpdir")));
@Joniからの回答のように明示的にプロパティを設定することができます。あなたが明示的に設定しない場合、JVMは、起動時にプラットフォーム固有のデフォルト値に初期化 - もEnvironment variable to control java.io.tmpdir?
を見ると、それがどのように見られないことができますか?
プロパティjava.io.tmpdir
が無効なディレクトリを指している場合、一時ファイルを作成できません。
は独立デフォルト値が得られるかの、あなたはJVMの起動時にシステムプロパティjava.io.tmpdir
を設定することで、一時ファイルのディレクトリを設定することができます。
java -Djava.io.tmpdir=/path/to/where/ever/you/like YourClass
デフォルト値はどこから来るのかを知りたい場合は、あなたのJVMのソースコードを読む必要があります。
GetTempPath
機能チェックのため:たとえば、Windows上でのOpenJDKは、次のように環境変数にパスとレジストリがルックアップするAPI関数GetTempPathW
(JDKのソースコード内のファイルjava_props_md.c
を検索)を呼び出し、次の順序で環境変数が存在し、最初に見つかったパスを使用します。
- TMP環境変数で指定されたパス。
- TEMP環境変数で指定されたパス。
- 環境変数USERPROFILEで指定されたパス。
- Windowsディレクトリ。
この関数は、パスが存在することを確認したり、現在のプロセスにパスに対するアクセス権があるかどうかを調べたりしません。
TMPのenv変数を変更すると、java.io.tmpdirは依然として透過的なoodatuimに出力されますか? – user1985273
"oodatuim"とはディレクトリを意味すると思います。プログラムがTMPをリセットするスクリプトで起動されているかもしれません。おそらく変更を有効にするためにシステムを再起動する必要があります。おそらくJVMはGetTempPath関数を使用しません。データが提供されます。 – Joni
試してみてください。
String path = System.getProperty("java.io.tmpdir");
と完全性を期すためにここでそれを追加するには、方法createTempFile(String prefix,String suffix)とJavaのfileからcreateTempFile(String prefix, String suffix, File directory)方法もありますクラス。ここで
は、一時ファイルのフィンパスに私のコードで、一時パスを見つける:このコードの
public class GetTempFilePathExample
{
public static void main(String[] args)
{
try{
//create a temp file
File temp = File.createTempFile("temp-file-name", ".tmp");
System.out.println("Temp file : " + temp.getAbsolutePath());
//Get tempropary file path
String absolutePath = temp.getAbsolutePath();
String tempFilePath = absolutePath.
substring(0,absolutePath.lastIndexOf(File.separator));
System.out.println("Temp file path : " + tempFilePath);
}catch(IOException e){
e.printStackTrace();
}
}
}
出力は次のとおりです。
Temp file : /tmp/temp-file-name3697762749201044262.tmp
Temp file path : /tmp
- 1. IntellJ IDEA - >システムがパスを見つけることができません
- 2. nhibernateでデータベースを接続中にシステムがファイルを見つけることができません
- 3. パックURIを使用してリソースを見つけることができませんが、相対パスでリソースを見つけることができません。
- 4. システムが指定したパスを見つけることができません(Java Development Kit)
- 5. java.io.FileNotFoundException:システムが指定されたパスを見つけることができません
- 6. Selenium + Java java.io.FileNotFoundException(システムが指定されたパスを見つけることができません)
- 7. xp_cmdshell - システムが指定されたパスを見つけることができません
- 8. アプリケーションエンジンのウィンドウエラー - システムが指定されたパスを見つけることができません
- 9. ビジュアルスタジオ2015システムが指定されたパスを見つけることができません
- 10. AIPエクスポートのDspace:(システムが指定されたパスを見つけることができません)
- 11. Java - IOException:システムが指定されたパスを見つけることができません
- 12. installfest rake db:システムが指定されたパスを見つけることができません
- 13. エラー:パスを持つファイルを見つけることができません:prelude_dev.js
- 14. PowerShell:コピーアイテムがパスを見つけることができません
- 15. Dockerfile supervisordがパスを見つけることができません
- 16. DDE - Windowsがパスを見つけることができません
- 17. New-SelfSignedCertificate -CertStoreLocationがパスを見つけることができません
- 18. scriptblockのコピーファイルがパスを見つけることができません
- 19. 私のシステムでMonodevelopのmdtoolを見つけることができません
- 20. システムはレールに指定されたパスを見つけることができません
- 21. デプロイ中にSpring RestがJPARepositoryを見つけることができません
- 22. カルマ:モジュールを相対パスに見つけることができません
- 23. パスの一部を見つけることができませんでした
- 24. 角2のフォーム "パスでコントロールを見つけることができません"
- 25. 私はWindowsError取得(3、「システムは指定されたパスを見つけることができません」)
- 26. ウィンドウのエラー:[エラー3]システムは指定されたパスを見つけることができません。」.prankは/*.*
- 27. 署名ツールへのパスを見つけることができません
- 28. Symfony 3.1:パス "/ logout"のコントローラを見つけることができません
- 29. はパスの一部を見つけることができません
- 30. 私はストーリーボードのパスを見つけることができません
コードください... –
チェックいただきました!文字列のdirName = System.getProperty( "java.io.tmpdir"); File.createTempFile(文字列接頭辞、文字列接尾辞、ファイルディレクトリ) – Horuss
File.CreateTempFile( "test"、 "test")はwhileコードの前にあります:) – user1985273