资产文件目录给出java.io.FileNotFoundException eclipse

我的资产文件夹中有一个xls文件,我想用jexcelapi库打开。 我已经设置文件的path为(“file:///android_asset/jxlrwtest.xls”),甚至尝试在我的根文件夹中使用New-> File创build一个xls文件并直接访问它,但仍然是我每次运行模拟器时都会得到错误java.io.FileNotFoundException“(没有这样的文件或目录)”。 我也确保每次尝试移动文件时都会刷新path。 我整个class级阅读excel文件是

package com.example.kirikedictionary; import java.io.File; import java.io.IOException; import android.app.Activity; import android.content.Context; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class ReadExcel { private String inputFile; protected Context context; public ReadExcel(Context context){ this.context = context.getApplicationContext(); } public void setInputFile(String inputFile) { this.inputFile = inputFile; } public void read() throws IOException { File inputWorkbook = new File(inputFile); Workbook w; try { w = Workbook.getWorkbook(inputWorkbook); // Get the first sheet Sheet sheet = w.getSheet(0); // Loop over first 10 column and lines for (int j = 0; j < sheet.getColumns(); j++) { for (int i = 0; i < sheet.getRows(); i++) { Cell cell = sheet.getCell(j, i); CellType type = cell.getType(); if (type == CellType.LABEL) { System.out.println("I got a label " + cell.getContents()); } if (type == CellType.NUMBER) { System.out.println("I got a number " + cell.getContents()); } } } } catch (BiffException e) { e.printStackTrace(); } } public void main(String[] args) throws IOException { ReadExcel test = new ReadExcel(context); test.setInputFile("file:///android_asset/jxlrwtest.xls"); test.read(); } } 

和我不断收到的错误是

12-30 01:36:59.386:W / System.err(1851):java.io.FileNotFoundException:file:/android_asset/jxlrwtest.xls:打开失败:ENOENT(没有这样的文件或目录)12-30 01:36 :59.393:W / System.err(1851):at libcore.io.IoBridge.open(IoBridge.java:456)12-30 01:36:59.393:W / System.err(1851):在java.io上。 FileInputStream。(FileInputStream.java:76)12-30 01:36:59.394:W / System.err(1851):at jxl.Workbook.getWorkbook(Workbook.java:213)12-30 01:36:59.394:W /System.err(1851):at jxl.Workbook.getWorkbook(Workbook.java:198)12-30 01:36:59.394:W / System.err(1851):at com.example.kirikedictionary.ReadExcel.read( ReadExcel.java:33)12-30 01:36:59.394:W / System.err(1851):at com.example.kirikedictionary.ReadExcel.main(ReadExcel.java:62)12-30 01:36:59.394: W / System.err(1851):在com.example.kirikedictionary.MainActivity $ 3.onItemClick(MainActivity.java:148)12-30 01:36:59.394:W / System.err(1851):在android.widget。 AdapterView.performItemClick(AdapterView.java:300)12-30 01:36:59.395:W / System.err(1851):at androi d.widget.AbsListView.performItemClick(AbsListView.java:1143)12-30 01:36:59.416:W / System.err(1851):at android.widget.AbsListView $ PerformClick.run(AbsListView.java:3044)12 -30 01:36:59.416:W / System.err(1851):at android.widget.AbsListView $ 3.run(AbsListView.java:3833)12-30 01:36:59.416:W / System.err(1851) :at android.os.Handler.handleCallback(Handler.java:739)12-30 01:36:59.417:W / System.err(1851):at android.os.Handler.dispatchMessage(Handler.java:95)12 -30 01:36:59.432:W / System.err(1851):at android.os.Looper.loop(Looper.java:135)12-30 01:36:59.432:W / System.err(1851): at android.app.ActivityThread.main(ActivityThread.java:5221)12-30 01:36:59.432:W / System.err(1851):at java.lang.reflect.Method.invoke(Native Method)12-30 01:36:59.432:W / System.err(1851):at java.lang.reflect.Method.invoke(Method.java:372)12-30 01:36:59.433:W / System.err(1851): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)12-30 01:36:59.433:W / System.err(1851):at com.andr oid.internal.os.ZygoteInit.main(ZygoteInit.java:694)12-30 01:36:59.433:W / System.err(1851):引起:android.system.ErrnoException:打开失败:ENOENT(No such文件或目录)12-30 01:36:59.434:W / System.err(1851):at libcore.io.Posix.open(Native Method)12-30 01:36:59.435:W / System.err(1851 ):at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)12-30 01:36:59.451:W / System.err(1851):at libcore.io.IoBridge.open(IoBridge.java:442) 12-30 01:36:59.452:W / System.err(1851):… 18

请帮助,因为我不想使用外部SD卡文件,我一直在这里卡住了。

您只能将file:/// android_asset / someName用作WebView的URL。 它不是由文件系统识别的文件名。

使用Context.getAssets获取AssetManger实例,并使用AssetManager.open获取资产文件的InputStream。

如果您需要提供一个File实例,请将资源中的文件复制到应用程序的专用目录中。