我遇到了这个问题,我试图保存带有标题(作为文件夹名称)的日记条目和内容(日记条目)到外部存储。
已将<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
添加到我的清单文件中,并将10MIB创建到我的模拟器中。
但是,这给了我问题。有什么想法吗?
public void SavingData(){
String Title = txtTitle.getText().toString();
String Content = txtContent.getText().toString();
boolean isWriteable = false;
boolean isAvailable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
//we can RW the media;
isWriteable = isAvailable = true;
}
else if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
isAvailable = true;
isWriteable = false;
}else{
isAvailable = isWriteable = false;
}
File sdcard = new File (getExternalFilesDir("MyDiary"), Title);
File dir = new File(sdcard + "/" + Content +".txt");
dir.mkdirs();
try {
dir.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(!dir.mkdirs()){
Log.e(LOG_TAG,"Directory not created");
}
try {
FileOutputStream fos = new FileOutputStream(dir);
fos = openFileOutput("MyDiary",Context.MODE_APPEND);
fos.write(Content.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
您正在创建.txt
文件作为目录。而不是在
dir.mkdirs();
你应该有
sdcard.mkdirs();
try {
FileOutputStream fos = new FileOutputStream(dir);
fos = openFileOutput("MyDiary",Context.MODE_APPEND);
fos.write(Content.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
进一步,而不是
File dir = new File(sdcard + "/" + Content +".txt");
您想使用
File dir = new File( sdcard, Content + ".txt" );
避免明确使用路径分离器。如果必须使用它,请使用File.pathSeparatorChar
。