Android的資料存放區

來源:互聯網
上載者:User
 Android支援四種資料存放區方式,分別是 Preference, File, DataBase, Content Provider 。這幾天工作上的一個測試程式要求儲存一個影像檔,用了用File的這種方式,有了一點小小的心得。

 

    先說下,Preference,File, DataBase這三種方式分別對應的目錄是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。

 

    在Android中通常使用File儲存方式是用Context.openFileOutput(String fileName, int mode)和Context.openFileInput(String fileName)。

 

    Context.openFileOutput(String fileName, int mode)產生的檔案自動儲存在/data/data/Package Name/files目錄下,其全路徑是/data/data/Package Name/files/fileName 。注意下,這裡的參數fileName不可以包含路徑分割符(如"/")。

 

    通常來說,這種方式產生的檔案只能在這個apk內訪問。但這個結論是指使用Context.openFileInput(String fileName)的方式。使用這種方式,每個apk只可以訪問自己的/data/data/Package Name/files目錄下的檔案,原因很簡單,參數fileName中不可以包含路徑分割符,Android會自動在/data/data/Package Name/files目錄下尋找檔案名稱為fileName的檔案。

 

    但是如果你直接使用這個File,那麼這個File在其它apk中也是可以訪問的,不過要注意在之前調用Context.openFileOutput(String file, int mode)時不要使用預設的mode:MODE_PRIVATE ,而應該使用MODE_WORLD_READABLE 。使用預設mode產生的檔案的許可權是“660”(也就是rw-rw----),而使用後者組建檔案的許可權是允許運行別的apk訪問的。代碼如下:

    File file = new File("/data/data/Package Name/files/fileName");

 

    另外還有一個方法可以改變這個組建檔案的許可權。可以直接在Java代碼中執行Linux命令,畢竟Android歸根到底也是Linux .代碼如下:

   // Process process = Runtime.getProcess().exec("chmod 666 /data/data/Package Name/files/fileName");
   //process.waitFor();

 Process process = Runtime.getRuntime().exec ("ls");      
          BufferedReader   ins   =   new   BufferedReader(new  InputStreamReader(process.getInputStream()));
          String line;
          while((line = ins.readLine())!=null)  
           {  
           Toast.makeText(this, line, Toast.LENGTH_LONG).show();
           }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.