2011-05-11 80 views
0

我在我的android應用程序中使用一個非常複雜的方法(不是我寫的),它接受一個字符串參數「路徑」,然後打開並解析該路徑中的文件。 問題是這樣的:當我設置路徑到我的SD卡上的文件(如下所示:Environment.getExternalStorageDirectory()+「/ myfile.txt」)它工作正常。 但我不希望我的文件可用於用戶,所以我試圖設置路徑到我的項目中的資產文件夾,我複製該文件,並使用此路徑它將無法正常工作。在我的資產文件夾中的文件浪費了這個:file:///android_asset/myfile.txt 那麼爲什麼第一個路徑工作正常,第二個什麼也沒做?我的文件的安裝路徑

感謝

+0

///從 「中」 向 「去」

路徑發送作爲參數的 「非常複雜的方法」 複製方法你有沒有權限(和權限)編輯你正在使用的「非常複雜的方法」的代碼? – TofferJ

回答

1

你必須使用AssetManager訪問的資產文件夾中的文件。

+0

爲了說明問題,這是因爲應用程序項目中的資產文件夾是.apk存檔的駐留文件,並且在安裝應用程序時不是設備或模擬器上的單獨文件夾,因此您無法使用普通文件訪問該文件夾訪問功能。 – RivieraKid

+0

感謝RivieraKid。說得通 – user347187

0

所以我做的是這樣的:我寫了一個方法,將文件從資產複製到我的應用程序的數據目錄,然後將此路徑發送到「非常複雜的方法」。 現在它工作正常。 代碼示例(也許這將有助於在未來的人):

///從資產文件夾中打開文件

的InputStream在= getAssets()打開( 「myfile.txt的」);

///創建輸出和位置給它

///您可以設置任何路徑你喜歡

(新文件( 「數據/數據/ myAppPackageName /數據庫/」))。 mkdirs(); OutputStream out = new FileOutputStream(「data/data/myAppPackageName/databases/myfile.txt」); 「數據/數據/ myAppPackageName /數據庫/ myfile.txt的」