2016-09-06 263 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() 

足夠用於檢查進入此目錄,但似乎我錯了。

我有一個目錄

/storage/emulated/0/multirom 

與 'LS'

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

這意味着 - 我可以

cd multirom/ 

但我不能

$ ls 
ls: .: Permission denied 

所以我看到 - file.canRead()只檢查執行能力,以便有人可以「進入」(執行)目錄,但不能「讀取」內容。

問題是 - 有沒有在這裏提到這個?我找不到有關它的詳細信息。爲什麼方法canRead()檢查執行位而不是檢查執行位和讀取位? 也許這會幫助有這種問題的人。 謝謝。

回答

0

這裏是從Android Javadoc中的文檔:

Android File class

還有在文件類canExecute()方法。

+0

我的問題不是關於這個。爲什麼方法canRead()檢查執行位而不是同時檢查執行和讀取? – RedCollarPanda

+0

嗯,我不確定你會發現比Android文檔中更多的細節。你可以調查源代碼中的canRead()方法,看看它在做什麼? –