2012-07-12 26 views
0

我想在文件中存儲字符串列表。創建和讀取一次性創建的文件

我需要創建它只是一次,之後,我會閱讀和編寫它programmaticlly。

我的問題是在文件系統中我應該創建文件(手動),以便它最適合讀和寫?

謝謝。

回答

2

您可以創建應用程序的目錄文件,所以沒有人可以訪問它,但你的應用程序

getApplicationContext().getFilesDir().getAbsolutePath(); 

或SD卡

File externalStorage = Environment.getExternalStorageDirectory(); 

如果你希望別人來訪問它,並可能對,如果你的文件非常大

如果你打算創建你的文件手動那麼我認爲SD卡是唯一的選擇,除非你有一個根的p磨練或與模擬器一起工作。在資產文件夾

-1

添加文件,那麼這將是清楚後,新安裝

+0

你什麼意思? – 2012-07-12 18:43:39

+0

如果您將資產文件夾中添加文件,它將作爲singelton在所有應用程序的.apk中 – Gorets 2012-07-12 18:54:09

0

這要看。

在SDCard上創建文件的問題是需要特殊權限才能訪問它。如果應用程序僅適用於您自己,那很酷。如果你想通過谷歌 市場 發佈遊戲(或者現在這些天被稱爲的任何東西),請知道有些人(包括我自己)傾向於查看權限並詢問「爲什麼做X的應用程序需要許可才能執行是嗎?「,並且有時候不會安裝應用程序。

如果手動部分是由應用程序的用戶完成的,請務必將其存儲在SD卡上。這是標準的,非root用戶甚至可以訪問的唯一地方。

但是,一般來說,更好的存儲數據的地方在/ data/data/packagename中。有關更多詳細信息,請參閱Android的data storage

Shachar

1
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) 
    { 
     //SDcard is there 
     File f=new File("/sdcard/YOURFILE.txt"); 
     if (!f.exists()) 
     { 
      //File created only for first time 
      f.createNewFile(); 
      //create inputstream and write it to your file 
      OutputStream out=new FileOutputStream(f); 
      byte buf[]=new byte[1024]; 
      int len; 
      while((len=inputStream.read(buf))>0) 
      out.write(buf,0,len); 
      out.close(); 
      inputStream.close(); 
      System.out.println("\nData Written"); 
     } 
     else { // read/ write SECOND TIME } 
    }