Je fais une application simple dans Android et dans une certaine partie de l'application, je voudrais créer un fichier Excel et y écrire. J'ai déjà tout préparé pour utiliser JEXCEL Bibliothèque pour éditer une Excel à l'aide de Java, mais c'est que je ne trouve pas le fichier Excel que j'ai créé. J'ai essayé de le trouver dans mon propre appareil exécutant l'application, mais je ne pouvais pas.
String fileName = "hours.xls"; File file = new File(getApplicationContext().getFilesDir() + fileName);
5 Réponses :
sur Android Kitkat, il renvoie / data / data / {votre nom de package} / fichiers code>, mais j'imagine que cela pourrait changer en fonction de votre version de plate-forme. Ainsi, si vous essayez simplement de creuser votre système de fichiers et de voir un fichier, il est prudent d'utiliser ce chemin, mais si vous utilisez ce chemin pour certaines fonctionnalités sur plusieurs versions de plate-forme, vous ne devez que le référer à l'aide de
getfilesdir () code>. p>
Bien que le chemin que vous avez énuméré a été correct depuis Android 1.0, il n'est que correct pour le compte d'utilisateur principal. Sur les tablettes Android 4.2+ et sur les téléphones Android 5.0+, l'utilisateur principal peut configurer des comptes secondaires. Si l'application est exécutée par l'un de ces comptes, getfilesdir () code> retourne ... quelque chose d'autre. J'aurais besoin de la connecter pour me souvenir de la structure de chemin exacte.
Ce chemin de répertoire a-t-il changé pour Lollipop, Marshmallow et Nougat?
Qu'envoyez-vous d'utiliser ce fichier? Voulez-vous aussi qu'il utilise d'autres applications aussi? Utilisation de gettaplicationContext (). GetFilesDir () code> vous donnera
/data/data/com.package/files code> mais si vous souhaitez un fichier facilement accessible par vous-même et d'autres applications, Vous ferez mieux d'utiliser quelque chose comme
getexternalfilesdir () code> p>
Lire la documentation, cette méthode lit les fichiers stockés dans le stockage interne créé avec
avec retourne le chemin absolu sur le répertoire du système de fichiers où
Les fichiers créés avec OpenFileOutput (chaîne, int) sont stockés. P>
blockQuote> OpenFileOutput () Code>: P>
Si vous souhaitez accéder à votre fichier via votre PC (avec un câble USB) ou via un gestionnaire de fichiers sur votre appareil, préférez:
new File(getExternalFilesDir(null), fileName);
Ceci a fonctionné:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = getApplicationContext(); b = (Brain)load("brain.txt"); if (b == null) { b = new Brain(); } vocabulary = (ArrayList <String>) load("vocabulary.txt"); if (vocabulary == null) { vocabulary = new ArrayList <String> (); vocabulary.add("I love you."); vocabulary.add("Hi!"); } b.setRunning(true); } public Object load(String fileName) { File file = new File("/storage/emulated/0/Android/data/com.cobalttechnology.myfirstapplication/files/" + fileName); if (!file.exists()) { return null; } try { Object o; FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis); o = ois.readObject(); if (o == null) { System.out.println(fileName + " = null"); } ois.close(); fis.close(); System.out.println("Loaded: " + fileName); return o; } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } return null; } public void save(Object o, String fileName) { File file = new File("/storage/emulated/0/Android/data/com.cobalttechnology.myfirstapplication/files/" + fileName); try { if (!file.exists()) { file.createNewFile(); } FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(o); oos.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } }
Excateusement. Faire ceci (getfilesdir () + nom de fichier) concaténer le nom du dossier final avec le nom du fichier comme celui-ci (en supposant que le nom de fichier = "myfile.xls"): ... / com.mysociety.myapp / fileMyfile.xls au lieu de .. ./files/myfile.xls