FileInputStream 错误没有这样的文件或目录

Posted

技术标签:

【中文标题】FileInputStream 错误没有这样的文件或目录【英文标题】:FileInputStream error No such file or directory 【发布时间】:2017-09-11 07:26:48 【问题描述】:

问题是当我在 android Studio 中运行我的程序时,FileInputStream 找不到 c:\poi-test.xls 文件。

我在 Android Studio 中运行的简单测试 java 程序是:

try 

    File file = new File("C:\\poi-test.xls");

    FileInputStream fis = new FileInputStream(file);

 catch (FileNotFoundException e) 
    e.printStackTrace();

在 Android Studio 中,我单步执行并创建了文件对象,但是当我单步执行 FileInputStream 时,出现以下错误:

C:\poi-test.xls: open failed: ENOENT (No such file or directory)

我花了几个小时试图通过 SO 和 google 解决问题,但没有找到解决方案。

完整的错误列表是:

W/System: ClassLoader referenced unknown path: /data/app/com.jake.testforreadxls-1/lib/x86_64
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
**W/System.err: java.io.FileNotFoundException: C:\poi-test.xls: open failed: ENOENT (No such file or directory)**
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:76)
W/System.err:     at com.jake.testforreadxls.MainActivity.onCreate(MainActivity.java:21)
W/System.err:     at android.app.Activity.performCreate(Activity.java:6237)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
W/System.err:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
W/System.err:     at libcore.io.Posix.open(Native Method)
W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:438)
W/System.err:   ... 14 more
Disconnected from the target VM, address: 'localhost:8734', transport: 'socket'

【问题讨论】:

只是为了验证显而易见的......文件在正确的目录中并且路径已经验证。 【参考方案1】:

在模拟器/安卓设备中运行的应用程序无法访问您 PC 的文件系统。 Android 操作系统不知道C:\\poi-test.xls 在哪里。文件必须存储在设备内部存储的 sd 卡上,您的解决方案才能正常工作。

【讨论】:

以上是关于FileInputStream 错误没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 OutOfMemory 错误的情况下从 FileInputStream 获取字节数组

如何修复 Kotlin 中 FileInputStream 和 FileDescriptor 的错误路径

在java中读取属性文件时出错[复制]

FileInputStream读取文件

将 inputStream 转换为 FileInputStream?

如何完全加载音频但稍后播放?