6

私のプログラムはかなり集中的な操作を行うため、処理を高速化するためにスクラッチ ファイルを使用します。次の Java コードを使用します。

File scratchFile = new File(System.getProperty("java.io.tmpdir") + "WCCTempFile.tmp");
if (!scratchFile.exists())
    scratchFile.createNewFile();

このコードは、Mac OS X と Windows で問題なく動作します。オペレーティング システムによって決定される Java 一時ディレクトリにスクラッチ ファイルが作成されます。

ただし、Linux (特に Linux Mint) でこのプログラムを試すと、「scratchFile.createNewFile()」行で次のエラーが発生します。

java.io.IOException: Permission Denied

System.getProperty("java.io.tempdir")メソッドによって収集された一時ディレクトリは、ユーザーが書き込むことができるディレクトリであると考えていたので(そしてそれは他のオペレーティングシステム上にあります)、このエラーに本当に混乱しています。これは Linux では当てはまりませんか? 一時ディレクトリへのアクセスを許可する方法はありますか? 私が使用するはずの他のディレクトリはありますか?

4

2 に答える 2

11

Linux ではjava.io.tmpdir、一般的に/tmp(末尾の / がないことに注意してください) に設定されます。余分な埋め込みスラッシュをいじる代わりに、2 パラメーターの File コンストラクターを使用する方がはるかにクリーンです。

File scratchFile = new File(System.getProperty("java.io.tmpdir"),"WCCTempFile.tmp");

そうすれば、末尾のスラッシュについて心配する必要はありません。

于 2013-02-13T01:39:49.967 に答える
-1

権限がある場合は、を使用してディレクトリの権限を変更できますchmod

于 2013-02-13T01:35:34.727 に答える