2015-12-30 88 views
0

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

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(); 
    } 

} 

,我不断收到错误

1月12日至30日: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):at java.io.FileInputStream。(FileInputStream.java:76)12-30W/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):at com.example.kirikedictionary.MainActivity $ 3.onItemClick(MainActivity.java:148) 12-30 01:36:59.394:W/System.err(1851):at android.widget.AdapterView .performItemClick(AdapterView.java:300) 12-30 01:36:59.395:W/Syst em.err(1851):at android.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):在 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。 android.internal.os.ZygoteInit.main(ZygoteInit.java:694)12-30 01:36:59.433:W/System.err(1851):引起: android.system.ErrnoException:打开失败:ENOENT(没有这样的文件或 目录)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(BlockGuardO .java:186)12-30 01:36:59.451:W/System.err(1851):at libcore.io.IoBridge。开(IoBridge.java:442)1月12日至30日:36:59.452: W/System.err的(1851):... 18多个

请帮助,因为我不希望有使用外部SD卡文件,我在这里呆了一段时间。

+0

请将您的项目导入到Android Studio。 Eclipse已被弃用,它会产生更多像这样的问题 – piotrek1543

回答

1

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

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

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

+0

请关于如何做到这一点的任何示例? –

+0

所以我看到这个解决方案从资产文件夹复制到应用程序目录,现在我可以在那里编辑文件http://stackoverflow.com/a/16984117/5728859 –

相关问题