2

次のようなコードがあります。

return (new File(pathA + File.separator + pathB + File.separator)).mkdir();

以前は機能していたと思いますが、現在は機能していません。アプリケーションは Linux でのみ実行され、Mint 9、Ubuntu 10.04、Kubuntu 12.04 などでテストされています。目的のディレクトリは作成されません。

パスは、777 のアクセス許可を持つディレクトリ内にあります。

スタック トラックはあまり役に立ちません。トレースが java.security メソッドの呼び出しをいくつか示しているため、これはパーミッションの問題であると考えられます。しかし、実際のエラー メッセージはまったく役に立ちません (おそらく、コード内の例外処理を改善する必要があるためです)。

Linux上のJavaでディレクトリを作成する最良の方法は何ですか?

4

2 に答える 2

3
  • 変数に抽出path + File.separatorします。
  • コンソールに出力する
  • ターミナルでシェルを起動し、アプリを実行しているのと同じユーザー アカウントを使用してこのコマンドを実行します。 mkdir <INSERT THE PATH TO THE DIR THAT YOUR APP IS TRYING TO CREATE HERE>

これにより、問題の根本原因が明らかになるはずです。

それでも答えが明確にならない場合は、他のすべての証拠を質問に追加してください。

于 2012-05-18T21:19:50.313 に答える
2

問題は、パスに複数のレベルのディレクトリを作成していたことでした。解決策は次のとおりです。

return (new File(pathA + File.separator + pathB + File.separator)).mkdirs();

mkdirs()の「s」に注意してください。

于 2012-05-18T21:44:32.363 に答える