2013-04-02 38 views
3

我有一個應用程序讓我通過文件資源管理器(該文件存儲在sd中)選擇一個文件,然後讀取它。Android應用程序如何在應用程序內部存儲和獲取文件

我想修改它,所以它將文件直接放入應用程序並從「內部」讀取文件。我必須將文件放入項目中?我怎樣才能訪問它?

+0

您可以在構建應用程序時添加文件到資產的文件夾..但我不能建立後應用到資產的文件夾中寫以後...您可以在SD卡上寫字的方式 – DeltaCap

回答

0

是的,你可以把你的文件到/資產的文件夾,並檢索如下:

AssetManager assetManager = getAssets(); 
InputStream instream = assetManager.open("file.txt"); 

或RES /原始文件夾:

InputStream raw = getResources().openRawResource(R.raw.file); 

如果你想修改它,你」只能將文件寫入外部存儲器(例如sdcard), 或內部存儲器(在您的應用程序文件夾data/data/package_name/下)。 如果您將文件存儲到外部存儲中,它將一直存在,直到用戶手動或以編程方式刪除該文件。但是,如果您將此文件存儲到內部存儲中,則在用戶刪除應用程序或清除應用程序緩存時將刪除該文件。

+0

我認爲從資產文件夾中可讀取的字節數是有限制的。 –

0

Demo

File myExternalFile; 

if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { 
      saveToExternalStorage.setEnabled(false); 
     } else { 
      myExternalFile = new File(getExternalFilesDir(filepath), filename); 
     } 

保存外部存儲(FileOutputStream中)

try { 
       FileOutputStream fos = new FileOutputStream(myExternalFile); 
       fos.write(myInputText.getText().toString().getBytes()); 
       fos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      myInputText.setText(""); 
      responseText.setText("Saved to External Storage.(StorageFile.txt)"); 

獲取外部存儲(的FileInputStream)

try { 
       FileInputStream fis = new FileInputStream(myExternalFile); 
       BufferedReader br = new BufferedReader(
         new InputStreamReader(fis)); 
       String strLine; 
       while ((strLine = br.readLine()) != null) { 
        myData = myData + strLine; 
       } 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      myInputText.setText(myData); 
      responseText 
        .setText("Data retrieved from Internal Storage.(StorageFile.txt)"); 
+0

請不要使用DataInputStream來讀取文本文件。你不需要它,所以請刪除它,因爲人們可能會複製此代碼。 –

+0

@PeterLawrey:那麼哪個類應該使用? –

+0

使用您已有的其他課程。 DataInputStream是多餘的,這個壞例子在堆棧溢出時每個月大約被複制30次。 –

3

您可以通過使用保存文件的項目中的以下代碼:

File cDir = getApplication().getExternalFilesDir(null); 
File saveFilePath = new File(cDir.getPath() + "/" + "yourfilename"); 

您可以在設備中的應用程序包名稱的「文件」文件夾內看到保存的文件。

嘗試以下路徑在您的設備:

File manager >> Android >> data >> "your package name" >> files >> new file. 
相關問題