java.io.FileNotFoundException:/:open failed:EISDIR(是一个目录)

时间:2014-06-30 13:55:06

标签: android filenotfoundexception

   File albumF = getVideoAlbumDir();
   String path = albumF.getAbsolutePath();

// path =/storage/emulated/0/Pictures/.MyImages (Hidden folder)
// fileSelected.fileName()=IMG_20140417_113847.jpg

   File localFile = new File(path + "/" + fileSelected.fileName());

        Log.v("", "file exist===" + localFile.exists());
        if (!localFile.exists()) {
            Log.v("", "inside if===");
            Log.v("", "Parent Filet===" + localFile.getParentFile());
            localFile.getParentFile().mkdirs();
            // localFile.createNewFile();
            copy(fileSelected, localFile);
        } else {
            Log.v("", "inside else===");
            mCurrentPhotoPath = localFile.getAbsolutePath();
            uploadMediaFile();
        }

此复制方法将数据从dropbox文件复制到我的本地存储。

private void copy(final Entry fileSelected, final File localFile) {
        final ProgressDialog pd = ProgressDialog.show(ChatActivity.this,
                "Downloading...", "Please wait...");
        new Thread(new Runnable() {

            @Override
            public void run() {
                BufferedInputStream br = null;
                BufferedOutputStream bw = null;
                DropboxInputStream fd;
                try {
                    fd = mDBApi.getFileStream(fileSelected.path,
                            localFile.getAbsolutePath());
                    br = new BufferedInputStream(fd);
                    bw = new BufferedOutputStream(new FileOutputStream(
                            localFile));

                    byte[] buffer = new byte[4096];
                    int read;
                    while (true) {
                        read = br.read(buffer);
                        if (read <= 0) {
                            break;
                        }
                        bw.write(buffer, 0, read);
                    }
                    pd.dismiss();

                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    android.os.Message msg = new android.os.Message();
                    msg.arg1 = 100;
                    if (msg.arg1 >= 100) {
                        progressHandler.sendMessage(msg);
                        mCurrentPhotoPath = localFile.getAbsolutePath();
                    }

                } catch (DropboxException e) {
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (bw != null) {
                        try {
                            bw.close();
                            if (br != null) {
                                br.close();
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }).start();

我正在使用localFile.getParentFile()在文件夹中创建文件.mkdirs(); 我将此文件上传到服务器时出现上述错误。

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果你已经尝试了所有其他选项 - 并且问题仍然存在 - 那么也许你有一个案例,当你想要创建的文件与现有目录的名称匹配时。(这可能是我之前创建的对mkdirs()的调用也许意外)。 例: 您想要保存文件 Test \ test.pdf ,但您已经有文件夹 Test \ Test.pdf \