Android: open failed: ENOENT (Aucun fichier ou répertoire)
Salut, je suis en train de lire excel à partir d'actifs et a voulu le convertir en JSON, Mais je reçois le d'erreur: échec de l'ouverture:ENOENT(Aucun fichier ou répertoire), recherchées de nombreuses questions, mais ne pouvait pas trouver la solution
Ci-dessous mon code
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");
}
Je l'ai mentionné que les autorisations ci-dessous
<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"/>
Ci-dessous est ma Trace
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)
OriginalL'auteur teekib | 2014-11-25
Vous devez vous connecter pour publier un commentaire.
Cette question gaspillé mes heures de temps 😛
De vérifier soigneusement les noms de vos fichiers en vous connectant.
Ce problème est livré avec des noms de fichier avec des chiffres.
J'ai résolu ce problème en changeant le nom de fichier.
quel est le problème avec les noms de fichiers avec des chiffres, est-il un moyen de sortir sans avoir à modifier les noms de fichier?
OriginalL'auteur Don Chakkappan
Utilisation
getAssets().open("filter.xls")
(Elle renvoie un InputStream). Appelons cela à un contexte ou à l'activité. Seulement cela a fonctionné pour moi dans certains cas.OriginalL'auteur angor