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 的错误路径