-1

我对我在 Logcat 中获得的结果感到困惑。我正在尝试读取文件,但收到 FileNotFoundException。现在我正在硬编码文件所在的 url。

InputStream readMyFile(String fileName){
    File file = new File("C:\\Users\\Alvaro\\workspaceEclipse\\ProyectA\\file.xml");
    //File file = new File("C:" +File.separator +"Users" +File.separator +"Alvaro" +File.separator +"workspaceEclipse" +File.separator +"ProyectA" +File.separator +"file.xml");
    System.out.println("Working Directory = " +
              System.getProperty("user.dir"));
    System.out.println(file.exists());
    System.out.println(file.canRead());
    InputStream in = null;
    try {
        in = new BufferedInputStream(new FileInputStream(file));
        if (in != null) {
            in.close();
        }
    }catch(Exception e){
        System.out.println("Error opening the file. \n" +e);
    }
    return in;
}

我可以看到找不到该文件,因为不知何故,在 url 字符串的开头插入了一个“/”:

/C:\Users\Alvaro\workspaceEclipse\ProyectA\file.xml: open failed: ENOENT (No such file or directory)

问题是,如果我使用 File.separator,输出是:

/C:/Users/Alvaro/workspaceEclipse/ProyectA/file.xml: open failed: ENOENT (No such file or directory)

有谁知道可能会发生什么?

其他信息:

  • 工作目录 = /
  • file.exists() 和 file.canRead() 显然返回 false。
  • Windows 7家庭高级版。
  • Eclipse 版本 Indigo 服务版本 2
  • Java 版本 1.6.0_37
4

1 回答 1

2

我认为问题在于您并没有真正“在 Windows 上”运行。

相反,我怀疑您在 Android 仿真环境中运行。Android 是为 Linux 设计的,我希望仿真环境中的 Android 运行时库假定文件系统使用 UNIX/Linux 样式的路径名。

赠品是您在 logcat 中看到消息。Logcat 是一个 Android 主义。它不是 Windows 上的 Java 或 Linux 上的 Java 原生的。


需要注意的另一件事是,您尝试做的事情(访问 Eclipse 工作区中的文件)在真正的 Android 设备上并不适用。与其弄清楚如何使用 Windows 路径名来访问 Eclipse 工作区,不如弄清楚如何将文件放入 Android 应用程序本身或(模拟的)Android 文件系统。


如果您想确认此诊断,请将您的代码示例放入一个普通的 Java 应用程序中,然后从命令提示符编译和运行它。

于 2013-04-15T09:20:48.923 回答