Java createNewFile-打开失败:enoint(没有这样的文件或目录)

Java createNewFile-打开失败:enoint(没有这样的文件或目录),java,android,Java,Android,我不知道这里出了什么问题……我试着写得更成功,但没有成功。在阅读了关于这个问题的其他建议后,我加入了所有额外的字符串。没有帮助。不知道发生了什么事。可能与权限有关吗?好吧,我正在尝试写入内部内存,不需要特殊权限 public void outputBitmap(){ String path = Environment.DIRECTORY_PICTURES.toString(); File folder = new File(path + "/Blabla"); Stri

我不知道这里出了什么问题……我试着写得更成功,但没有成功。在阅读了关于这个问题的其他建议后,我加入了所有额外的字符串。没有帮助。不知道发生了什么事。可能与权限有关吗?好吧,我正在尝试写入内部内存,不需要特殊权限

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()时;它会给出错误消息“open failed:Enoint(没有这样的文件或目录)”

不确定是否相关,但我试图输出的信息来自:

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(...);
}
我想我应该能够为位图使用相同的画布,但这导致崩溃,所以我将相同的信息写入两个画布。所以…我不知道这是否与这个问题有关,或者是一个完全不同的坏问题,或者是什么

我一直在寻找各种似乎相似的问题,但找不到任何适合我的解决方案。我已经试着解决这个问题好几天了。有人知道怎么回事吗


谢谢你没有正确使用Environment.DIRECTORY\u图片。它本身不是文件夹,您需要将其用作getExternalStoragePublicDirectory()方法的参数。 检查此处:

可能的问题:

确保您已在清单文件中授予以下所需权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

对于Marhsmallow设备,请确保设备用户也授予联系人组权限。

Ref:

只需从以下内容更改代码的开头:

public void outputBitmap(){ 
    String path = Environment.DIRECTORY_PICTURES.toString();
    File folder = new File(path + "/Blabla");
为此:

public void outputBitmap(){File folder = new File(getActivity().getExternalFilesDir(null) + IMAGE_DIRECTORY + "whatever you want for your directory name");

非常感谢。将顶行更改为“文件夹=新文件(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+“/Whatever/”;”然后它就走了!再次感谢!哦,当我说“我正在尝试写入内部内存,不需要特殊权限”时,结果也错了。我没有意识到“外部”在本例中是指程序外部,而不是电话。因此,我还必须将“”放入AndroidManifest.xml中,以便在其他人有相同问题时添加此额外信息。