[英]Can't access file in the raw folder
我是Android開發的新手。 我在res\\raw
文件夾中有一個test.txt
文件。 由於某種原因,我無法訪問它。
這是我用來測試的代碼。 為什么file.exists()
返回false
?
final String path = "android.resource://" + getActivity().getPackageName() + "/raw/test.txt";
final Uri uri = Uri.parse(path);
final File file = new File(uri.getPath());
boolean exists = file.exists(); // Returns false.
順便說一句,我需要獲取文件的Uri
。 我需要它,以便能夠使用接受Uri
作為參數的現有函數。
為什么file.exists()返回false?
首先,資源是開發機器上的文件。 它不是設備上的文件。
第二, getPath()
上Uri
只是返回的路徑部分Uri
。 您的情況是/raw/test.txt
。 如果Uri
是您問題的https
URL,則路徑為/questions/56090894/cant-access-file-in-the-raw-folder
。 這些都不是任何Android設備上的有效文件系統路徑。 您不能采用半隨機字符串,將它們傳遞給File
構造函數,並期望它們具有含義。
我需要獲取文件的Uri
如果您確實要說“獲取資源的Uri
”,歡迎嘗試uri
。 android.resource
方案有點晦澀難懂,因此很有可能您使用的函數將不支持它。
在這種情況下,您將需要:
InputStream
getResources().openRawResource()
在Context
上的getResources().openRawResource()
) FileOutputStream
(例如,在getCacheDir()
) InputStream
復制到OutputStream
Uri.fromFile()
為該庫創建一個Uri
該函數還可能期望其他類型的Uri
。 由於我們不知道它是什么功能,因此我們無法查看其文檔(如果有的話)並告訴您它可能會或可能不會期望的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.