2013-10-15 100 views
1

我嘗試將一些數據寫入SD卡,但正如您所看到的,我使用了TOAST,並且在按addbtn時得到此消息: 「只讀文件系統「 ,它很明顯,它不寫入SD卡 所以我應該如何解決這個問題? 由於事先 這裏是我使用的代碼:在試圖寫入SD卡時處理只讀文件系統

case R.id.donebtn: 
    if (subject.getText().toString().isEmpty()) { 
     startActivity(new Intent(this, emptysbj.class)); 
    } 
    else { 
     String s = subject.getText().toString(); 
     String n = note.getText().toString(); 
     try { 
      File mydir = new File(Environment.getExternalStorageDirectory() 
        + File.separator + "myTasks" + File.separator + s); 
     mydir.mkdirs(); 
     File myFile = new File(s); 
     myFile.createNewFile(); 
     FileOutputStream fOut = new FileOutputStream(myFile); 
     OutputStreamWriter myOutWriter = 
       new OutputStreamWriter(fOut); 
     myOutWriter.append(n); 
     myOutWriter.close(); 
     fOut.close(); 
     Toast.makeText(getBaseContext(), 
       "Done writing to SD :" + s, 
       Toast.LENGTH_SHORT).show(); 
    } catch (Exception e) { 
     Toast.makeText(getBaseContext(), e.getMessage(), 
       Toast.LENGTH_SHORT).show(); 
    } 

} 
finish(); 
break; 

,這裏是我的logcat堆棧:

> 10-15 19:36:27.195: I/[POST_RESELECT](8750): [spanChange] (o, 
> oldStart, newStart, oldEnd, 
> newEnd)=([email protected],-1,0,-1,0) 10-15 
> 19:36:27.195: I/[POST_RESELECT](8750): [spanChange] (o, oldStart, 
> newStart, oldEnd, 
> newEnd)=([email protected],-1,0,-1,0) 10-15 
> 19:36:27.195: I/[POST_RESELECT](8750): [spanChange] (o, oldStart, 
> newStart, oldEnd, 
> newEnd)=([email protected],-1,0,-1,0) 10-15 
> 19:36:27.195: I/[POST_RESELECT](8750): [spanChange] (o, oldStart, 
> newStart, oldEnd, 
> newEnd)=([email protected],-1,0,-1,0) 10-15 
> 19:36:27.205: I/[POST_RESELECT](8750): [spanChange] (o, oldStart, 
> newStart, oldEnd, 
> newEnd)=([email protected],-1,0,-1,0) 10-15 
> 19:36:27.205: I/[POST_RESELECT](8750): [spanChange] (o, oldStart, 
> newStart, oldEnd, 
> newEnd)=([email protected],-1,0,-1,0) 10-15 
> 19:36:29.067: I/[POST_RESELECT](8750): 
> [sendCursorChangeNotificationToIME] ENTER... 10-15 19:36:29.067: 
> I/[POST_RESELECT](8750): NOW IS XXX NOT COMPOSING..... 10-15 
> 19:36:29.067: I/[POST_RESELECT](8750): [getWordOnCursor] cursor_pos=0 
> 10-15 19:36:29.067: I/[POST_RESELECT](8750): 
> [sendCursorChangeNotificationToIME] TAP..... 10-15 19:36:29.067: 
> I/[POST_RESELECT](8750): 
> [sendCursorChangeNotificationToIME](content,cursor_start,tap)=(,0,false) 
> 10-15 19:36:29.617: I/[POST_RESELECT](8750): [handleTextChanged] 
> (start,before,after)=(0,0,1) 10-15 19:36:29.817: 
> I/[POST_RESELECT](8750): [handleTextChanged] 
> (start,before,after)=(1,0,1) 10-15 19:36:29.998: 
> I/[POST_RESELECT](8750): [handleTextChanged] 
> (start,before,after)=(2,0,1) 10-15 19:36:31.209: E/No such file or 
> directory(8750): Erfan 
+0

異常消息? –

+0

嘗試http://stackoverflow.com/questions/6066030/read-only-file-system-on-android –

+0

@Seraphim只突出了異常的消息,請再次看我編輯的問題請 – Erfan

回答

0

變化:

File mydir = new File(Environment.getExternalStorageDirectory() +File.separator+ 
          "myTasks"+File.separator+s); 

到:

File mydir = new File(Environment.getExternalStorageDirectory(), "myTasks"); 

的N,變化:

File myFile = new File(s); 

到:

File myFile = new File(mydir, s); 
+0

沒有解決我的問題,這次我得到這個味精:沒有這樣的文件或目錄(我想這是因爲我不能寫入內存,它的讀取只有 – Erfan

+0

@ user2541758:將你的整個堆棧跟蹤粘貼到你的問題 – CommonsWare

+0

我剛剛做到了,請檢查它,謝謝 – Erfan

0

也許你的代碼有被試圖寫裏面/這是只有讀取。如果要將文件存儲在SD卡內,則必須更改爲:

File root = Environment.getExternalStorageDirectory(); 
File file = new File(root, "myTasks" + File.separator + s); 
+0

沒有幫助我! – Erfan