2014-11-25 12 views
7

안녕하세요, 자산에서 Excel을 읽으려고하고 JSON으로 변환하려고했지만 오류가 발생했습니다 : 열려는 데 실패했습니다 : ENOENT (해당 파일 없음 또는 디렉토리)가 질문에 이렇게 많은 검색하지만, 다음은 내 추적Android : open failed : ENOENT (해당 파일 또는 디렉토리 없음)

입니다 내가

<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"/> 

아래와 같이 권한을 언급 한 다음 내 코드

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

인 솔루션 을 찾을 수 없습니다 철저 로그인하여 파일 이름을 확인 P

:

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) 

답변

7

이 문제시간 내 시간을 낭비.

이 문제는 일부 파일 이름에 숫자가 포함되어 있습니다.

파일 이름을 변경하여이 문제를 해결했습니다.

+0

어떻게 파일 이름을 변경 했습니까? 이 질문을 참조하십시오 : http://stackoverflow.com/questions/30882833/file-not-found-exception-when-trying-to-upload-file-to-xampp-server-from-android/30883016?noredirect=1 # comment49807367_30883016. 내 문제를 해결하도록 도와주세요. 미리 감사드립니다. – Keshav1234

+0

파일 이름에 숫자가 무엇이 문제가 있습니까? 파일 이름을 변경하지 않고도 방법이 있습니까? –

0

getAssets().open("filter.xls") (InputStream을 반환)을 사용하십시오. 컨텍스트 또는 활동에서 이것을 호출하십시오. 어떤 경우에만이 기능이 나에게 도움이되었습니다.

관련 문제