問題1
問題描述:使用DownLoadManager下載,設(shè)置好下載文件的存放路徑。當我們根據(jù)這個路徑去讀取文件的時候,發(fā)現(xiàn)讀不到這個文件。
例如:
設(shè)置文件的下載路徑(Environment.DIRECTORY_DOWNLOADS):
request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,GetFileName(url));
設(shè)置文件的讀取路徑:File file =newFile(Environment.DIRECTORY_DOWNLOADS);
結(jié)果:讀取不到已存在的文件。
造成讀不到這個文件的原因是:文件下載后的存放路徑與讀取這個文件的路徑不一致。
雖然我們看似寫了同一個路徑,但你所寫的并不是絕對路徑。這個路徑的前面部分是不同的。接下來細細探討下。
其實:
request.setDestinationInExternalFilesDir(x, URIForDM,x);這個方法的默認路徑是
mnt/sdcard/Android/data/(packageName)/files+URIForDM
所以我們在使用File file =newFile(URIForDM);是不對的。
正確的讀取路徑是在設(shè)置的下載路徑前加上默認的路徑
完整的讀取路徑為:File file =newFile(mnt/sdcard/Android/data/(packageName)/files+URIForDM);
我在程序里面將默認的前部分路徑獲取寫成如下:
Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"Android"+File.separator+"data"+File.separator+context.getPackageName()+File.separator+"files";
這個路徑加上你設(shè)置的URIForDM就可以獲取DownLoadManager下載的文件。