Java 如果绘制的图像未保存在SD卡中,我会做错什么?

Java 如果绘制的图像未保存在SD卡中,我会做错什么?,java,android,android-studio,Java,Android,Android Studio,我在清单文件中设置了必要的权限,Toast通知实际上显示图像已保存。下面是执行保存作业的方法 public void saveImage () { int count = 0; File sdDirectory = Environment.getExternalStorageDirectory(); File subDirectory = new File(sdDirectory.toString() + "/Pictures/Paint");

我在清单文件中设置了必要的权限,Toast通知实际上显示图像已保存。下面是执行保存作业的方法

public void saveImage () {

    int count = 0;

    File sdDirectory = Environment.getExternalStorageDirectory();
    File subDirectory = new File(sdDirectory.toString() + "/Pictures/Paint");

    if (subDirectory.exists()) {

        File[] existing = subDirectory.listFiles();

        for (File file : existing) {

            if (file.getName().endsWith(".jpg") || file.getName().endsWith(".png")) {

                count++;

            }

        }

    } else {

        subDirectory.mkdir();

    }

    if (subDirectory.exists()) {

        File image = new File(subDirectory, "/drawing_" + (count + 1) + ".png");
        FileOutputStream fileOutputStream;

        try {

            fileOutputStream = new FileOutputStream(image);

            mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);

            fileOutputStream.flush();
            fileOutputStream.close();

            Toast.makeText(getContext(), "saved", Toast.LENGTH_LONG).show();

        } catch (FileNotFoundException e) {


        } catch (IOException e) {


        }

    }

}

我的图像是从绘制的文件创建的。我可能遗漏了什么?

我认为您的
mBitmap
变量中没有任何内容,或者您在创建图像
文件的行中添加了一个额外的
/
。试着这样做:

File image = new File(subDirectory, "drawing_" + (count + 1) + ".png");

无论哪种方式,如果不起作用,您将不得不调试它。我会删除try->catch语句并查看是否出现错误,直到您知道它工作正常为止,然后只添加try->catch语句。

您到底在哪里将内容写入新文件?@MrFisherman我相信这行fileOutputStream=new fileOutputStream(image);应该是我写的。很长一段时间以来,我一直在用android编程,我遵循的教程就是这样的。但是你只是告诉fileOutputStream输出文件/路径在哪里,似乎你没有向这个文件写入任何内容。检查这个:也把断点放在if(subDirectory.exists())行上,运行debbuger模式,检查它是否为true。