我无法弄清楚这里出了什么问题...我试图更简洁地写这篇文章,但没有用。阅读有关此问题的其他建议后,我输入了所有额外的字符串。没有帮助。不知道发生了什么事。可能与权限相关吗? AFAIK我正在尝试写入内部存储器,并且不需要特殊权限?

public void outputBitmap(){
    String path = Environment.DIRECTORY_PICTURES.toString();
    File folder = new File(path + "/Blabla");
    String filename = new SimpleDateFormat("yyMMddHHmmss").format(Calendar.getInstance().getTime()) + ".png";
    try {
        if (!folder.exists()) {
            folder.mkdirs();
            System.out.println("Making dirs");
        }
        File myFile = new File(folder.getAbsolutePath(), filename);
        myFile.createNewFile();

        FileOutputStream out = new FileOutputStream(myFile);
        myBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
        out.flush();
        out.close();

    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

每次,目录未完成或出现某种情况时,它都会“制作目录”。当到达myFile.createNewFile();时它给出错误消息“打开失败:ENOENT(没有这样的文件或目录)”

不确定是否相关,但是我尝试输出的信息来自:
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    myBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.RGB_565);
    Canvas pngCanvas = new Canvas(myBitmap);
    ...[some maths and stuff]
    canvas.drawLine(...);
    pngCanvas.drawLine(...);
}

我以为我应该能够为位图使用相同的 Canvas ,但是这导致崩溃,因此我正在向两个 Canvas 写入相同的信息。所以...我不知道这是否与问题有关,或者与其他问题完全无关。

一直在搜寻各种看似相似的问题,但找不到适合我的解决方案。我已经尝试解决了好几天了。有人知道出什么事了吗?

谢谢

最佳答案

您没有正确使用Environment.DIRECTORY_PICTURES。它本身不是文件夹,您需要将其用作getExternalStoragePublicDirectory()方法的参数。
检查这里:http://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String)

关于java - createNewFile-打开失败的: ENOENT (No such file or directory),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22435061/

10-12 04:23