java.io.FileNotFoundException: /mnt/sdcard/Android/data/com.



我遇到了这个问题,我试图保存带有标题(作为文件夹名称)的日记条目和内容(日记条目)到外部存储。

已将<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

最新更新