2016-09-06 25 views
0

おやすみ!Android/Java File.canRead()奇妙な問題

興味深い状況があります: 私のコードで私は/sdcard/を私のAndroidの電話で歩き、ファイルのペアを見つけようとします。 私は私がしようとディレクトリを開いている間:

if (listFiles != null && listFiles.length != 0) { 
      for (File file : listFiles) { 
       if (file.isDirectory() && file.canRead()) { 
         for (File innerFile : file.listFiles()) { 

私は

file.canRead() 

がこのディレクトリへのアクセスをチェックするために十分であるが、私が間違っていたようだと思いました。

私はディレクトリを意味し '1!'

drwxrwx--x 10 root sdcard_rw  4096 2016-08-31 14:21 multirom 

/storage/emulated/0/multirom 

持っている - 私は

cd multirom/ 

ことができますが、私は

$ ls 
ls: .: Permission denied 
ことはできませんが

私が見る通り、file.canRead()は実行能力のみをチェックするので、誰かがディレクトリを "入力"(実行)できますが、コンテンツを "読み込む"ことはできません。

質問はどこですか?私はそれについての詳細を見つけることができませんでした。なぜメソッドcanRead()が実行ビットと読み取りビットの両方をチェックするのではなく、ビットをチェックするのか? これは、このような問題を抱えている人を助けるでしょう。 ありがとうございます。ここで

答えて

0

は、Androidのjavadocからのドキュメントです:

Android File class

FileクラスのcanExecute()メソッドもあります。

+0

私の質問はこれに関するものではありませんでした。なぜメソッドcanRead()が実行と読み取りの両方をチェックするのではなく、ビットをチェックするのか? – RedCollarPanda

+0

ええと、Androidのドキュメントよりもはるかに詳細がわかりません。ソースコード内のcanRead()メソッドを調べて、それが何をしているのか正確に調べることができますか? –