java.io.FileNotFoundException:/data/data/package_name/files/A/A.json:打开失败:ENOENT(没有这样的文件或目录)

问题描述:

我使用android系统中下面的代码创建一个文件:java.io.FileNotFoundException:/data/data/package_name/files/A/A.json:打开失败:ENOENT(没有这样的文件或目录)

File path = new File(this.context.getFilesDir() + File.separator + "A"); 
     File file = null; 

     if (!path.exists()){ 
      //print log 1 
      if (! path.mkdirs()){ 
       //print log 2 
      } else { 
       //print log 3 
       file = new File(path.getAbsolutePath(),"A.json"); 
      } 
     } else { 
      //print log 4 
      file = new File(path.getAbsolutePath(),"A.json"); 
      if (file.exists()) 
      { 
       //print log 5 
      } else { 
       //print log 6 
      } 
     } 
InputStream is = new FileInputStream(file); 

问题: - 当我安装APK时,第一次上面的代码工作。我得到日志: //打印日志1,打印​​日志3。 然后我能够得到输入流。

但接下来这段代码执行时的时间,它去打印日志4,打印日志5. 但是,当我试图让输入流中它给我的错误: java.io.FileNotFoundException:/数据/数据/ com.abc.android.abc/files/A/A.json:打开失败:ENOENT(没有这样的文件或目录)

+0

获得输入流'然后我就可以得到输入流。不可能。你刚刚创建了目录'A',然后就会有一个'A.json'文件在里面了?不可能。 – greenapps

+0

你的代码在很多方面都很糟糕。例如,如果mkdirs()失败,甚至尝试打开输入流。你应该回来。没有进一步执行。 – greenapps

+0

'我在android中使用下面的代码来创建一个文件:'。您的代码中没有创建文件。 – greenapps

无论你在何处定义f。您正在定义文件pathfile并尝试从f

+0

对不起,f应该是文件。即InputStream is = new FileInputStream(file); –

+0

如果你在log5里面,你应该可以得到流。 1.在文件'file.canRead()'上尝试一次readcheck。 2.检查清单中的权限以供阅读。 3.直接检查文件系统上的所有者filepermission(adb) – Fusselchen