TP4 : Stockage de données



Documents pareils
Cours 14 Les fichiers

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP1 : Initiation à Java et Eclipse

TD/TP 1 Introduction au SDK d Android

Flux de données Lecture/Ecriture Fichiers

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Programmation système I Les entrées/sorties

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Créer et partager des fichiers

Exporter des écritures. Importer des écritures. Depuis EBP Comptabilité.

TP : Gestion d une image au format PGM

Introduction à Eclipse

TP1 : Initiation à Java et Eclipse

Le langage C. Séance n 4

TD3: tableaux avancées, première classe et chaînes

Capacité de mémoire Tablettes

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Programmation avec des objets : Cours 7. Menu du jour

Edutab. gestion centralisée de tablettes Android

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

cbox VOS FICHIERS DEVIENNENT MOBILES! INTERFACE WEB MANUEL D UTILISATION

Gestion distribuée (par sockets) de banque en Java

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

1 Lecture de fichiers

Approche Contract First

Affectation standard Affectation modifiée (exemple)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Utilisation d objets : String et ArrayList

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Guide Utilisateur Transnet

Premiers Pas en Programmation Objet : les Classes et les Objets

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Programmer en JAVA. par Tama

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Plan du cours. Historique du langage Nouveautés de Java 7

Développement d une application Android pour l Association des Paralysés de France

TP, première séquence d exercices.

Android 4 Les fondamentaux du développement d'applications Java

Initiation à la Programmation en Logique avec SISCtus Prolog

Manuel d utilisation du site web de l ONRN

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Guide informatique AUDIT EVALUATION DE LA PRATIQUE DE L ANTIBIOPROPHYLAXIE EN MATERNITE

TP3 : Manipulation et implantation de systèmes de fichiers 1

Alors pour vous simplifiez la vie, voici un petit tuto sur le logiciel de sauvegarde (gratuit) SyncBack.

But du papier : Paramétrer WSUS pour récupérer les mises à jour et administrer le serveur WSUS

Initiation à LabView : Les exemples d applications :

Restaurer des données

Guide d installation CLX.PayMaker Office (3PC)

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Manuel Utilisateur Version 1.6 Décembre 2001

Programmation Mobile Android Master CCI

3 L'arborescence Windows

Procédure de restauration F8. Série LoRdi 2012 à Dell V131 V3360 L3330

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Application de lecture de carte SESAM-Vitale Jeebop

Java DataBaseConnectivity

Formation des collecteurs de traces. Récupération des traces

MID. Table des matières

Tutorial Terminal Server sous

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Bases Java - Eclipse / Netbeans

Module d anonymisation

La base de données XML exist. A. Belaïd

Gestion des sauvegardes

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Travaux Pratiques : Lucène - Gestion d un index plein texte

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

TP2 : Client d une BDD SqlServer

E-Remises Paramétrage des navigateurs

Algorithmique et programmation : les bases (VBA) Corrigé

Les fichiers. Chapitre 4

Solutions du chapitre 4

TP 1. Prise en main du langage Python

Programmation impérative

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Créer un fichier PDF/A DÉPÔT ÉLECTRONIQUE

Installation et utilisation du client FirstClass 11

Utilisation du client de messagerie Thunderbird

Guide d utilisation pour W.access - Client

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Guide de mise à jour BiBOARD

ReadCard Guide Utilisateur

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Guide d utilisation commandes des pièces de rechange Rev.1.0.3

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

WinReporter Guide de démarrage rapide. Version 4

Récupération de données perdues

Transcription:

TP4 : Stockage de données 1 TP4 : Stockage de données Programmation Mobile Objectifs du TP Ce TP a pour objectif de vous initier au stockage des données dans le téléphone Android, dans la mémoire interne du téléphone et dans une carte de stockage externe. I. Stockage des données dans la mémoire interne Une application peut stocker ses données dans la mémoire interne du téléphone. Par défaut, ces données sont privées, c est à dire qu elles ne sont pas accessibles à partir d autres applications. A la suppression de l application, ces données sont supprimées. Pour chaque application, le système Android crée un répertoire qui s appelle : «/data/data/package_de_l application». Les fichiers internes sont stockés dans le répertoire files contenu dans ce répertoire. I. 1. Lecture et écriture des données à partir d un fichier Les primitives pour la manipulation des fichiers en Java se déclinent en plusieurs types. On distingue principalement les primitives pour la lecture, et les primitives pour l écriture. I. 1. 1. Primitives de lecture Il existe principalement deux types de primitives de lecture : les primitives de type InputStream et les primitives de type Reader. Ces deux primitives permettent de lire un flux de données à partir d une source en entrée, mais la principale différence entre les deux, c est que le InputStream lit un flux d octets, tandis que le Reader lit un flux de caractères. A partir d un InputStream, il est possible de créer un Reader en utilisant la classe InputStreamReader. Il est bien entendu plus facile de gérer un flux de caractères dans notre cas, puisque nous désirons lire des chaînes de caractères à partir d un fichier. Nous utiliserons donc principalement les primitives de type Reader, et en particulier le FileReader, qui est un InputStreamReader particulier, qui lit un flux de caractères à partir d un fichier. Enfin, pour faciliter la manipulation de ces flux, nous allons les envelopper dans un BufferedReader. Les primitives de type bufferisé n ajoutent pas de fonctionnalités supplémentaires, mais augmentent l efficacité d utilisation en fournissant des primitives facilitant l utilisation des flux, comme par exemple readline().

TP4 : Stockage de données 2 I. 1. 2. Primitives d écriture Les primitives d écriture duales à InputStreamReader, FileReader et BufferedReader sont respectivement OutputStreamWriter, FileWriter et BufferedWriter. I. 2. Création ou modification d un fichier Pour créer un fichier, ou modifier un fichier existant, la méthode prédéfinie openfileoutput est utilisée. En appelant cette méthode, il faut spécifier le nom du fichier, et ses modes d ouverture, qui sont: MODE_PRIVATE : Le fichier n est accessible que par l application qui l a créé. MODE_WORLD_READABLE : Le fichier est accessible en lecture par les autres applications. MODE_WORLD_WRITEABLE : Le fichier est accessible en écriture par les autres applications. MODE_APPEND : Si le fichier existe déjà, les données seront ajoutées à la fin. Indication : Il est possible de définir plusieurs modes à la fois en les séparant par un. Une méthode simple pour stocker des données dans un fichier est d utiliser le code suivant : // ouverture (ou création) du fichier pour modification en mode privé BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( openfileoutput("nom_fichier",context.mode_private))); // écriture de la chaîne de caractère dans le fichier bw.write("chaine_a_ecrire"); // fermeture du fichier bw.close(); catch (Exception e) { // Si une erreur existe, l afficher dans un Toast Toast.makeText(this, e.getmessage(), Toast.LENGTH_LONG).show(); TAF1 : Créer une application Android appelée Stockage. L activité principale contient un champ de saisie et un bouton appelé Ecrire Interne. En cliquant sur le bouton, le contenu du champs de saisie sera stocké dans un fichier appelé : «saisie.txt». Nous désirons que ce fichier soit accessible en lecture par les autres applications, et que la chaîne entrée soit ajoutée à la fin du fichier. I. 3. Lecture du contenu d un fichier Le code suivant permet de lire le contenu d un fichier, et de le stocker dans une chaîne de caractères.

TP4 : Stockage de données 3 // ouverture du fichier pour lecture BufferedReader br = new BufferedReader(new InputStreamReader( openfileinput("nom_du_fichier"))); // line est une variable qui stocke le contenu d une ligne String line; // StringBuffer contient des caractères qui peuvent être modifiés StringBuffer buffer = new StringBuffer(); // lecture des lignes du fichier et leur sauvegarde dans le StringBuffer while ((line = br.readline())!= null) { buffer.append(line); // fermeture du Reader br.close(); catch (Exception e) { // Si une erreur existe, l afficher dans un Toast Toast.makeText(this, e.getmessage(), Toast.LENGTH_LONG).show(); TAF2 : Ajouter un autre bouton à votre activité, appelé Lire Interne. Le clic sur ce bouton affiche le contenu du fichier saisie.txt dans un Toast. I. 4. Accès au fichier à partir d une autre application Il est possible d accéder à un fichier créé dans une application à partir d une autre application. Le fichier doit respecter les conditions suivantes : Il doit être créé avec le mode MODE_WORLD_READABLE pour être accessible en lecture Il doit être créé avec le mode MODE_WORLD_WRITEABLE pour être accessible en écriture Pour cela, on ne doit pas appeler le fichier directement par son nom dans la deuxième application, car le système va le chercher dans le répertoire associé à cette application. Au lieu de cela, il faut ajouter une référence au package de l application à laquelle appartient le fichier. Par exemple, si le fichier fich.txt a été crée par l application dont le package est pack.app1, alors remplacer : openfileoutput("fich.txt") par createpackagecontext("pack.app1", 0).openFileOutput("fich.txt") et garder le reste du code identique, pour l écriture ou la lecture du fichier. TAF3 : Créer une deuxième application, appelée AccesStockage. Modifier le fichier saisie.txt créé dans la première application en y ajoutant la ligne «Accessible de

TP4 : Stockage de données 4 l extérieur» Exécuter la première application, et afficher le contenu du fichier. Y trouvezvous la chaîne ajoutée? Si non, pourquoi? II. Stockage des données dans une mémoire externe Android supporte l accès à un système de stockage externe (une carte SD, par exemple). Tous les fichiers et répertoires de ce support de stockage sont accessibles en lecture pour toutes les applications. II. 1. Accès et modification du support de stockage externe Pour visualiser le contenu du support de stockage externe avec Eclipse, il est possible d utiliser la perspective DDMS (Dalvik Debug Monitor Server). Pour cela : Aller à Window > Open Perspective > Other Sélectionner DDMS et cliquer sur OK. Une fois la perspective choisie, l affichage devient comme dans la figure suivante :

TP4 : Stockage de données 5 Dans FileExplorer, vous pouvez voir le contenu de votre carte SD sous le répertoire mnt/sdcard. Pour ajouter un fichier à votre carte SD, sélectionner le répertoire sdcard et cliquer sur le bouton Pour télécharger un fichier existant dans votre carte SD, cliquer sur le bouton Pour revenir à l affichage du code, il faut revenir à la perspective Java. Pour cela, cliquer sur. TAF4 : Créer sur votre ordinateur un fichier qui s appelle chaine.txt, dans lequel vous écrirez : «Texte dans la carte SD». Ensuite, ajouter ce fichier à la carte SD de votre émulateur. II. 2. Tester le support de stockage externe suivante : Pour tester si le support de stockage externe est bien monté et s il est accessible en écriture, on utilise la variable String etat = Environment.getExternalStorageState(); Cette variable etat est une chaîne de caractère qui contient l état du support externe. Si etat est égale à Environment.MEDIA_MOUNTED alors le support externe existe, est monté et accessible en lecture et écriture. Si etat est égale à Environment.MEDIA_MOUNTED_READ_ONLY", alors le support externe existe, est monté mais est accessible en lecture seulement. Ainsi, pour tester l état du support externe, on peut exécuter le code suivant : boolean stockageexiste = false; boolean stockageecriture= false; String etat = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(etat)) { // Le support de stockage est accessible en lecture et écriture stockageexiste = stockageecriture= true; else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(etat)) { // Le support de stockage est accessible en lecture seulement stockageexiste = true; stockageecriture= false; else { // Le support de stockage n est pas accessible stockageexiste = stockageecriture= false;

TP4 : Stockage de données 6 TAF5 : Dans l application Stockage, créer une fonction qui s appelle mediaok, qui retourne true si la carte SD existe et est accessible en lecture et écriture, et false sinon. II. 3. Lecture d un fichier dans le support de stockage externe Pour accéder à un fichier dans un support externe, on utilise le code suivant : // accéder au répertoire par défaut du support externe File directory = Environment.getExternalStorageDirectory(); // Accès au fichier File file = new File(directory + "/nom_du_fichier"); // Tester si le fichier désiré existe, sinon, un Toast affiche un message d erreur if (!file.exists()) { Toast.makeText(this, "Fichier n existe pas dans la carte SD", 1000).show(); else{ // Si le fichier existe // Créer un BufferedReader pour parcourir le fichier en lecture BufferedReader br = new BufferedReader(new FileReader(file)); // Stocker le contenu du fichier dans un buffer String line; StringBuffer buffer = new StringBuffer(); while ((line = br.readline())!= null) { buffer.append(line); // Fermer le fichier br.close(); catch (Exception e) { Toast.makeText(this, e.getmessage(), Toast.LENGTH_LONG).show(); TAF6 : Ajouter un autre bouton dans l application stockage appelé Lire Externe. Ce bouton permet de lire le contenu du fichier chaine.txt qui se trouve dans votre carte SD, et de l afficher dans un Toast. II. 4. Création ou modification d un fichier dans un support externe Pour modifier un fichier dans le support de stockage externe, il faut tout d abord ajouter la ligne suivante dans le fichier AndroidManifest : <uses-permission android:name="android.permission.write_external_storage"/> Ensuite, utiliser les lignes suivantes dans le code de l application, pour les mêmes variables directory et file que précédemment :

TP4 : Stockage de données 7 // ouvrir le fichier en écriture BufferedWriter bw = new BufferedWriter(new FileWriter(file)); // écrire la chaine bw.write("chaine_a_ecrire"); // fermer le fichier bw.close(); catch (Exception e) { Toast.makeText(this, e.getmessage(), 2000).show(); Remarque : Si vous désirez ajouter le texte à la fin du fichier, il faut remplacer new FileWriter(file) par : new FileWriter(file, true); Le deuxième paramètre du constructeur détermine si la chaîne est concaténée (true) ou si le contenu est écrasé (false). TAF7 : Ajouter un autre bouton dans l application stockage appelé Ecrire Externe. Ce bouton permet de stocker le contenu du champs de saisie dans le fichier chaine.txt. III. Homework Créer deux applications qui partagent un fichier resultat.txt qui se trouve dans la carte SD : La première application SommeFichiers contient un champs de saisie txt et deux boutons ajouter et afficherliste. Elle permet de : o Saisir un entier à partir du champs txt. o Le clic sur ajouter permet de : Ajouter le contenu de txt à la fin d un fichier interne appelé entiers (chaque nouvelle entrée sera séparée par une virgule de l entrée précédente) Lire le contenu du fichier resultat.txt Si ce fichier est vide ou n existe pas, le créer et y mettre le contenu de txt Sinon, faire la somme de l entier dans le fichier resultat.txt avec l entier entré dans txt, puis stocker le résultat dans le fichier resultat.txt (l ancienne valeur sera écrasée). o Le clic sur afficherliste permet d afficher dans un Toast le contenu du fichier interne entiers. La deuxième application VerifierFichiers contient deux boutons : o Un bouton afficherliste qui affiche dans un Toast le contenu du fichier entiers o Un bouton afficherresultat qui affiche dans un Toast le contenu du fichier resultat.txt Remarque : Pour convertir une chaîne en entier : int valeur = Integer.valueOf(chaine) ; Pour convertir un entier en chaîne : String chaine = String.valueOf(valeur) ;