簡體   English   中英

無法訪問原始文件夾中的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM