2014-11-25 31 views
7

Merhaba, excel'i varlıklardan okumaya çalışıyorum ve onu JSON'a dönüştürmek istedim, ama ben hatası alıyorum: open failed: ENOENT (Bu tür bir dosya veya dizin), sorular SO birçok aradı ama aşağıda benim İzAndroid: open failed: ENOENT (Böyle bir dosya veya dizin yok)

olduğunu ben

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

aşağıdaki gibi izinleri belirtilen aşağıda benim kod

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

olan çözüm bulamadı Iyice Günlüğü tarafından dosya isimlerini kontrol 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) 

cevap

7

Bu sorunzaman saatlerimi harcadım.

Bu sorun, basamaklı bazı dosya adlarıyla birlikte gelir.

Dosya adını değiştirerek bunu çözdüm.

+0

Dosya adını nasıl değiştirdiniz? Lütfen şu soruya bakın: http://stackoverflow.com/questions/30882833/file-not-found-exception-when-trying-to-upload-file-to-xampp-server-from-android/30883016?noredirect=1 # comment49807367_30883016. Lütfen problemimi çözmek için bana yardımcı olun. Şimdiden teşekkürler. – Keshav1234

+0

Sayılarla dosya isimleri yanlış, dosya isimlerini değiştirmek zorunda kalmadan herhangi bir çıkış yolu var mı? –

0

getAssets().open("filter.xls") kullanın (Bir InputStream döndürür). Bunu bir bağlam veya etkinlik olarak adlandırın. Sadece bu bazı durumlarda benim için çalıştı.

İlgili konular