Android:创建文件时出错:ENOENT(没有这样的文件或目录)

3

我正在尝试使用以下代码创建一个新文件,但是出现了 "java.io.IOException: open failed: ENOENT(没有这样的文件或目录)" 错误。

这是我的代码:希望你能帮助我。

final File f = new File(Environment.
    getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DOWNLOADS).getPath() + "/"
                    + MainActivity.getContext().getPackageName() 
                    + "/wifip2pshared-" + System.currentTimeMillis()
                    + ".jpg");
Log.d("WIFI","file created :"+f.getAbsolutePath());
File dirs = new File(f.getParent());
Log.d("WIFI","dir created :"+dirs.getAbsolutePath());
dirs.mkdirs();
f.createNewFile();    

我已经在Android清单文件中声明了该权限。


你在清单文件中添加了读写权限吗? - Ankita
请尝试访问此链接:https://github.com/react-community/react-native-image-picker/issues/72 - Ankita
2个回答

2
请在您的应用程序清单中添加以下内容:

将此添加到您的清单应用程序中

android:requestLegacyExternalStorage="true"

1
如果您使用Android M或更高版本,则需要处理运行时权限。
File folder = new File(Environment.getExternalStorageDirectory() +
                File.separator + "wifip2pshared/" + dirName);
        boolean success = true;
        if (!folder.exists()) {
            success = folder.mkdirs();
        }
        if (success) {
            // Do something on success
        } else {
            // Do something else on failure
        }

OR

  File dir = new File("storage/emulated/0/wifip2pshared/" + dirName); 
try { 
      if (!dir.exists()) { 
          if (dir.mkdir()) { 
              System.out.println("Directory created"); 
           } else { 
              System.out.println("Directory is not created"); 
           } 
     } 
 } catch (Exception e) { 
        e.printStackTrace(); 
 }

文件 dir = new File("storage/emulated/0/wifip2pshared/" + dirName); 尝试 { 如果 (!dir.exists()) { 如果 (dir.mkdir()) { System.out.println("目录已创建"); } else { System.out.println("目录未被创建"); } } }赶上 (例外 e) { e.printStackTrace(); } - user7789678

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接