java - 在 Android : java. io.FileNotFoundException 中保存文件。打开失败:ENOENT(没有那个文件或目录)

标签 java android

我有下一个问题...我在源代码上搜索了答案,但没有找到好的答案...

java.io.FileNotFoundException: /mounted/EmailClient/side-corner.png: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:453)
at java.io.FileOutputStream.<init>(FileOutputStream.
at java.io.FileOutputStream.<init>(FileOutputStream.java:73) etc

代码:

private static String saveFile(String filename, InputStream input) {
    String path = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(path)) {
        try {
            byte[] attachment = new byte[input.available()];
            input.read(attachment);
            File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/EmailClient/", filename);
            if (!file.mkdirs())
                Log.d("EmailClient", "saveFile: Dir not created");
            FileOutputStream out = new FileOutputStream(file); //PROBLEM!
            out.write(attachment);
            input.close();
            out.close();
            return path;
        } catch (IOException e) {
            Log.e("EmailClient", "saveFile: File not saved", e);;
        }
    }
    return path;
}

最佳答案

使用此代码

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/EmailClient/");

folder.mkdirs();
File file = new File(folder,filename);
file.createNewFile();

关于java - 在 Android : java. io.FileNotFoundException 中保存文件。打开失败:ENOENT(没有那个文件或目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39554201/

相关文章:

Android:打开短信 Intent

android - 如何在 xamarin CrossPlatform 应用程序中使用 Web Api

java.lang.StringIndexOutOfBoundsException : when using PolyUtil. 解码

java - 当新线程运行时更大的线程池或额外的 ExecutorService?

java - *inject"编译时的接口(interface)方法实现

java两个jvm更新系统,没有jws或者applet

java - JOOQ "IN"查询抛出空指针异常

java - JVM 中不断增长的常驻大小集

android - 在 Android 应用程序中播放 Twitch.Tv 视频? (Android Studio 开发)

android - 自定义 View 上的 invalidate() 不会导致调用 onDraw(Canvas c)