java.lang.IllegalArgumentException:包含路径分隔符

M.A*_*ali 77 android

我的代码中有一个文件名:

String NAME_OF_FILE="//sdcard//imageq.png";
FileInputStream fis =this.openFileInput(NAME_OF_FILE); // 2nd line
Run Code Online (Sandbox Code Playgroud)

我在第二行收到错误:

05-11 16:49:06.355:ERROR/AndroidRuntime(4570):引起:java.lang.IllegalArgumentException:文件//sdcard//imageq.png包含路径分隔符

我也试过这种格式:

String NAME_OF_FILE="/sdcard/imageq.png";
Run Code Online (Sandbox Code Playgroud)

小智 77

解决方案是:

FileInputStream fis = new FileInputStream (new File(NAME_OF_FILE));  // 2nd line
Run Code Online (Sandbox Code Playgroud)

openFileInput方法不接受路径分隔符.

别忘了

fis.close();
Run Code Online (Sandbox Code Playgroud)

在末尾.


Ste*_*han 60

此方法在应用程序的私有数据区域中打开一个文件.您无法使用此方法打开此区域中的子目录中的任何文件或完全打开其他区域中的任何文件.因此,使用FileInputStream直接的构造函数来传递路径,其中包含一个目录.

  • 请举例说明一下 (37认同)
  • 你的答案令人困惑; OP正在使用FileInputStream (8认同)
  • 提供示例 (5认同)
  • 请解释一下答案. (2认同)

ref*_*log 29

openFileInput()如果要访问路径,则不接受路径,仅接受文件名,使用File file = new File(path)和对应FileInputStream

  • 如果您提供了一些示例代码来实现这一点,那就太棒了! (34认同)
  • @MuhammadBabar当然你需要代码,你不能总是在没有人为你提供代码的情况下编码.也许检查文档? (2认同)

小智 5

openFileInput("/Dir/data.txt")我在尝试使用带有 subdirectory 的方法从内部存储访问文件时收到上述错误消息Dir

您无法使用上述方法访问子目录。

尝试类似的方法:

FileInputStream fIS = new FileInputStream (new File("/Dir/data.txt"));
Run Code Online (Sandbox Code Playgroud)