2015-09-06 189 views
0

我使用下面的代碼寫入到SD卡上的文件時發生的事情:沒有嘗試寫入SD卡的Android

File dir =new File(android.os.Environment.getExternalStorageDirectory(),"MyFolder"); 
    if(!dir.exists()) 
    { 
     dir.mkdirs(); 
    } 
    String filename= "MyDoople.txt"; 
    try 
    { 
     File f = new File(dir+File.separator+filename); 

     FileOutputStream fOut = new FileOutputStream(f); 
     OutputStreamWriter myOutWriter = new OutputStreamWriter(
       fOut); 
     myOutWriter.append("Mytest"); 
     myOutWriter.close(); 
     fOut.close(); 
     Toast.makeText(getBaseContext(), 
       "Text Updated", 
       Toast.LENGTH_SHORT).show(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

然而,當我跑我的應用程序,然後去檢查SD卡,那裏什麼都沒有。爲什麼我沒有看到我創建的文件?我正在使用android jellybean 4.1,並在清單文件中添加了寫入權限。

+0

在你捕獲,變化'printStackTrace'到'Log.e( 「標籤」, 「消息」,異常)',以便如果有一個以顯示錯誤。 – xiaomi

+0

否則不會顯示錯誤? – fosho

+0

當試圖添加該行時,它會抱怨最後一個參數異常 – fosho

回答

1

從你的代碼,你下主要外部存儲寫入到文件夾「MyFolder文件」。

什麼是設備使用的是?它是否有額外的SD卡內存儲?如果是,那麼你的文件被寫入內部存儲器,但不是SD卡。

編輯: 要訪問SD卡,只需用SD卡路徑替換android.os.Environment.getExternalStorageDirectory()即可。

這不是一件容易的事找到SD卡的路徑。

一種方法是使用ContextCompat.getExternalFilesDirs(context, null),返回值的第一個元素將是相同的android.os.Environment.getExternalStorageDirectory(),第二個元素將在sdcard的某處。

但是,可能取決於你的android版本,返回的目錄可能是SD卡上的子目錄,即你的應用程序特定的目錄而不是SD卡的根目錄。如果您想查找根目錄,您必須檢查並手動更改它。

http://developer.android.com/reference/android/support/v4/content/ContextCompat.html#getExternalFilesDirs%28android.content.Context,%20java.lang.String%29

+0

該設備是一個承上啓下5 – fosho

+0

並且是它除了擁有SD卡 – fosho

+0

我如何才能讓其寫入SD卡內部存儲? – fosho