2011-04-02 111 views
0

我正在將數據存儲到/ data/data/.....中的文件!我想在我的應用程序中添加一個導入導出功能,將SDCARD中的文件備份並導入(並且應用程序會自動讀取它)。 我該如何做到這一點? 謝謝。 那是真的嗎?導入導出數據文件

public class Import { 
    public static void transfer(){ 
    File sdCard = Environment.getExternalStorageDirectory(); 
    File dir = new File (sdCard.getAbsolutePath() + "/SDCARD/Carburant"); 
    dir.mkdirs(); 
    copyfile("/data/data/carburant.android.com/files/","/SDCARD/Carburant/storeddata"); 

} 

    private static void copyfile(String srFile, String dtFile){ 
     try{ 
      File f1 = new File("/data/data/carburant.android.com/files/"); 
      File f2 = new File("/SDCARD/Carburant/storeddata"); 
      InputStream in = new FileInputStream(f1); 
      OutputStream out = new FileOutputStream(f2); 

      byte[] buf = new byte[1024]; 
      int len; 
      while ((len = in.read(buf)) > 0){ 
      out.write(buf, 0, len); 
      } 
      in.close(); 
      out.close(); 
      System.out.println("File copied."); 
     } 
     catch(FileNotFoundException ex){ 
      System.out.println(ex.getMessage() + " in the specified directory."); 
      System.exit(0); 
     } 
     catch(IOException e){ 
      System.out.println(e.getMessage());  
     } 
     } 

    } 

回答

1

首先,您需要確保您具有讀取/寫入數據的正確權限。

然後,你可以得到目錄爲您的應用程序是這樣的:

String myDir = act.getFilesDir(); 

關於Android的安全性和沙盒,你的應用程序將只能夠讀取/寫入此目錄,我想。儘管SDCard訪問更加開放:

您可以調用Environment.getExternalStorageDirectory()來獲取SD卡的根路徑並使用它創建FileOutputStream。

一個很好的例子是h ere in stackoverlow

+0

因此,我必須初始化傳輸操作(所有掛載,讀/寫執行),然後將文件複製到/ data/data ...中,然後將其複製到SDCARD中的目錄中!而已 ? – androniennn 2011-04-02 13:14:43

+0

請看我編輯的第一篇文章。 – androniennn 2011-04-02 13:49:43