我遇到了这个问题,我试图将标题(作为文件夹名称)和内容(日记条目)的日记条目保存到外部存储。
已将<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();
}
}
答案 0 :(得分:2)
您正在将.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
。