Android:打开失败:ENOENT(没有这样的文件或目录)

嗨,我想从资产读取excel,并希望将其转换成JSON,但我得到的错误:打开失败:ENOENT(没有这样的文件或目录) ,search了许多SO问题,但找不到解决scheme以下是我的代码

public void readXlsFileAndConvertToJsonObject() { JSONArray jsonArray = new JSONArray(); JSONArray mainJsonArray = new JSONArray(); try { File file = new File("file:///android_asset/filters.xls"); FileInputStream fis = new FileInputStream(file); //final FileInputStream file = new FileInputStream(new File("filters.xls")); int count = 0; // Get the workbook instance for XLS file HSSFWorkbook workbook = new HSSFWorkbook(fis); // Get first sheet from the workbook HSSFSheet sheet = workbook.getSheetAt(0); // Iterate through each rows from first sheet Iterator < Row > rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); //LOGGER.info("count is " + count); if (count == 0 || count == 1) {} else { try { JSONObject jsonMaterialObject = new JSONObject(); // Name jsonMaterialObject.put("name", row.getCell(0) .toString()); // thick ness jsonMaterialObject.put("thickness", row.getCell(4) .toString()); // rating_1 jsonMaterialObject.put("rating_1", row.getCell(5) .toString()); // rating_2 jsonMaterialObject.put("rating_2", row.getCell(6) .toString()); jsonMaterialObject.put("low_frequency_rank", row .getCell(7).toString()); jsonMaterialObject.put("medium_frequency_rank", row .getCell(8).toString()); jsonMaterialObject.put("high_frequency_rank", row .getCell(9).toString()); // Add file size final File dir = new File("file:///android_asset/filename"); final File[] ListFiles = dir.listFiles(); boolean found = false; if (ListFiles.length == 0) {} else { for (File aFile: ListFiles) { System.out.println("Afile Name " + aFile.getName()); System.out.println("A file from json Name " + row.getCell(0).toString()); if (aFile.getName().equalsIgnoreCase( row.getCell(0).toString() + ".pdf")) { jsonMaterialObject.put("fileSize", truncateDecimal(aFile.length() / 1024, 2)); found = true; } if (found) { break; } } jsonMaterialObject.put("pdfFileName", row .getCell(0).toString() + ".pdf"); } jsonArray.put(jsonMaterialObject); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } count++; } ((Closeable) file).close(); } catch (FileNotFoundException e) {} catch (IOException e) {} createMaterialJson(jsonArray.toString(), "finalfile.json"); } 

我提到的权限如下

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

以下是我的追踪

 11-25 12:32:35.535: I/System.out(20019): Exception accured in readXlsFileAndConvertToJsonObject /file:/android_asset/filters.xls: open failed: ENOENT (No such file or directory) 

Solutions Collecting From Web of "Android:打开失败:ENOENT(没有这样的文件或目录)"

这个问题浪费了我的时间:P

通过logging彻底检查您的文件名称。

这个问题带有一些带有数字的文件名。

我通过更改文件名解决了这个问题。

使用getAssets().open("filter.xls") (它返回一个InputStream)。 在上下文或活动中调用此方法。 在某些情况下,这只对我有效。