1

これが初歩的な質問のように思われる場合は申し訳ありませんが、私はそれに答えを見つけることができなかったようです。

Windowsで正常に動作するJavaコードがいくつかあります。その中に、次のような1行があります。

File dir = new File("F:\\some\\files\\here");

Linuxのリモートサーバーでこのコードを実行していますが、問題が発生している場合を除きます。ドライブ名がわからないので、行を次のように変更しました(Linuxではこれは重要ではないと思いますか?):

File dir = new File("\\some\\files\\here");

この行にはエラーはありませんが、後で電話します

File[] data = dir.listFiles();

私のWindowsコードではこれは正常に機能しますが、Linuxではnullオブジェクトを返します。もう少し調べてみたところ、元のコードではLinuxのディレクトリが戻らないようです。

dir.isDirectory() 

falseLinuxコードを返します。

誰もが問題になる可能性があることを知っていますか?\の代わりに/を使用してみましたが、同じ問題が発生します。

いくつかの追加情報:

listFiles()またはlist()を除いて、dirfineのメソッドの任意の部分にアクセスできます。私が試したことの1つは、dir.getParent()。listFiles()[0]を実行することです。getParent()は、何があってもディレクトリを取得する必要がありますが、listFiles()を呼び出すと、nullオブジェクトが返され、getParent()の結果はディレクトリではなくファイルであることがわかります。

4

1 に答える 1

0

File.separator を使用する必要があります。これはプラットフォームに依存しないツールであるため、Windows でも Linux でもパスの構築に問題はありません。

于 2013-02-21T19:49:39.220 に答える