Lire / écrire un fichier sur un stockage privé interne
Je suis le portage de l'application à partir de Symbian/iPhone à Android, qui est l'enregistrement de certaines données dans le fichier. J'ai utilisé le FileOutputStream pour enregistrer le fichier dans un dossier privé /data/data/nom_du_paquet/fichiers:
FileOutputStream fos = iContext.openFileOutput( IDS_LIST_FILE_NAME, Context.MODE_PRIVATE );
fos.write( data.getBytes() );
fos.close();
Maintenant, je suis à la recherche d'un moyen de les charger. Je suis l'aide de la FileInputStreammais il me permet de lire le fichier octet par octet, ce qui est assez inefficace:
int ch;
StringBuffer fileContent = new StringBuffer("");
FileInputStream fis = iContext.openFileInput( IDS_LIST_FILE_NAME );
while( (ch = fis.read()) != -1)
fileContent.append((char)ch);
String data = new String(fileContent);
Donc ma question est comment faire pour lire le fichier en utilisant la meilleure façon de faire?
source d'informationauteur STeN
Vous devez vous connecter pour publier un commentaire.
À l'aide de FileInputStream.read(byte[]) vous pouvez lire beaucoup plus efficacement.
En général, vous ne voulez pas être la lecture de l'arbitraire de la taille des fichiers en mémoire.
La plupart des analyseurs va prendre un
InputStream
. Vous pourriez peut-être laissez-nous savoir comment vous utilisez le fichier et nous avons pu proposer un meilleur ajustement.Ici est de savoir comment vous utilisez le tampon d'octets version de
read()
:Ce n'est pas vraiment Android, mais plus Java orienté.
Si vous préférez ligne axés sur la lecture au lieu de cela, vous pouvez envelopper le FileInputStream dans un InputStreamReader que vous pouvez ensuite passer à un BufferedReader. Le BufferedReader exemple, a une readLine() la méthode que vous pouvez utiliser pour lire ligne par ligne.
Alternativement, si vous utilisez le Google Goyave bibliothèque vous pouvez utiliser la fonction de commodité dans ByteStreams:
//pour écrire
//pour lire
contexte.getFilesDir() retourne un objet de Fichier du répertoire où le contexte.openFileOutput (), l'écriture dans un fichier.