Java: lire le contenu d'un fichier
Résolu
varfendell
Messages postés
3259
Date d'inscription
Statut
Membre
Dernière intervention
-
amine -
amine -
A voir également:
- Java lecture fichier
- Fichier bin - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Fichier epub - Guide
- Fichier rar - Guide
8 réponses
Bonjour,
Ta question reste encore un peu "flou" dans le sens où tu peux lire un fichier de plusieurs manières différentes en Java. Reste à savoir ton besoin : est-ce que tu souhaite lire tout le fichier d'un coup, ligne par ligne, lire un tableau de byte, lire une string directement, etc. ?
Voici un exemple tout simple de lecture ligne par ligne d'un fichier :
Voilà, libre à toi de t'en inspirer pour faire ce que tu souhaite. Si tu veux t'y prendre différemment, la meilleur chose est de parcourir le net et de trouver des tutoriaux sur les façons de lire un fichier en Java.
Notamment cette page sur les flux d'entrée / sortie : https://anisfrikha.developpez.com/tutoriel/java-io/
Bon courage.
Ta question reste encore un peu "flou" dans le sens où tu peux lire un fichier de plusieurs manières différentes en Java. Reste à savoir ton besoin : est-ce que tu souhaite lire tout le fichier d'un coup, ligne par ligne, lire un tableau de byte, lire une string directement, etc. ?
Voici un exemple tout simple de lecture ligne par ligne d'un fichier :
InputStreamReader flog = null; LineNumberReader llog = null; String myLine = null; try{ flog = new InputStreamReader(new FileInputStream("path du fichier a remplacer") ); llog = new LineNumberReader(flog); while ((myLine = llog.readLine()) != null) { // --- Affichage de la ligne lu depuis le fichier System.out.println("Ligne : "+myLine); } }catch (Exception e){ // --- Gestion erreur lecture du fichier (fichier non existant, illisible, etc.) System.err.println("Error : "+e.getMessage()); }
Voilà, libre à toi de t'en inspirer pour faire ce que tu souhaite. Si tu veux t'y prendre différemment, la meilleur chose est de parcourir le net et de trouver des tutoriaux sur les façons de lire un fichier en Java.
Notamment cette page sur les flux d'entrée / sortie : https://anisfrikha.developpez.com/tutoriel/java-io/
Bon courage.
Bonjour,
Voici un peu plus d'information sur ma demande:
Je souhaite en faite récuperer le contenu du fichier afin d'y effectuer une ou des regxp.
Il me faudrait donc une méthode qui prenne en paramettre le chemin d'acces au fichier à peu pres comme sa:
public String recupFichier (string chemin){ //'chemin' est le chemin pour acceder au fichier dont on doit
recuperer le contenu
string contenu = ""; //contiendra le contenu du fichier
String pos = System.getProperties().getProperty("user.dir"); //contient le chemin dans lequel on se trouve
l'application qu'on lance
.
.
.
}
J'ai pensé à utiliser la classe jdialog qui me permettrait d'afficher dans une fenetre l'arborescence des fichiers sur mon ordinateur, mais je n'ai pas réussi à la retrouver sur developez.com.
Voici un peu plus d'information sur ma demande:
Je souhaite en faite récuperer le contenu du fichier afin d'y effectuer une ou des regxp.
Il me faudrait donc une méthode qui prenne en paramettre le chemin d'acces au fichier à peu pres comme sa:
public String recupFichier (string chemin){ //'chemin' est le chemin pour acceder au fichier dont on doit
recuperer le contenu
string contenu = ""; //contiendra le contenu du fichier
String pos = System.getProperties().getProperty("user.dir"); //contient le chemin dans lequel on se trouve
l'application qu'on lance
.
.
.
}
J'ai pensé à utiliser la classe jdialog qui me permettrait d'afficher dans une fenetre l'arborescence des fichiers sur mon ordinateur, mais je n'ai pas réussi à la retrouver sur developez.com.
Pour ce qui est de la lecture du fichier tu peux donc t'appuyer sur ce que j'ai donné plus haut.
Pour ce qui est d'avoir une fenêtre de dialog pour choisir le fichier à lire, regarde cette discussion :
http://www.commentcamarche.net/forum/affich 5974005 java importer un dossier d image
Il te faudra utiliser la classe JChooseFile de Java, par contre il s'agit d'un composant graphique, il te faudra une fenêtre et un panneau de contenu (JContentPane) pour mettre et utiliser ce composant. Mais je suppose que si tu pose la question c'est que tu as déjà fait une interface graphique.
Voilà, tu devrais donc pouvoir résoudre ton problème toi même avec tout ça.
Pour ce qui est d'avoir une fenêtre de dialog pour choisir le fichier à lire, regarde cette discussion :
http://www.commentcamarche.net/forum/affich 5974005 java importer un dossier d image
Il te faudra utiliser la classe JChooseFile de Java, par contre il s'agit d'un composant graphique, il te faudra une fenêtre et un panneau de contenu (JContentPane) pour mettre et utiliser ce composant. Mais je suppose que si tu pose la question c'est que tu as déjà fait une interface graphique.
Voilà, tu devrais donc pouvoir résoudre ton problème toi même avec tout ça.
Merci beaucoup, cela me convient tout à fait, je vais pouvoir terminer mon programme :p
Encore merci.
Encore merci.
Bonjour,
Voici un peu plus d'information sur ma demande:
Je souhaite en faite récuperer le contenu du fichier afin d'y effectuer une ou des regxp.
Il me faudrait donc une méthode qui prenne en paramettre le chemin d'acces au fichier à peu pres comme sa:
public String recupFichier (string chemin){ //'chemin' est le chemin pour acceder au fichier dont on doit
recuperer le contenu
string contenu = ""; //contiendra le contenu du fichier
String pos = System.getProperties().getProperty("user.dir"); //contient le chemin dans lequel on se trouve
l'application qu'on lance
.
.
.
}
J'ai pensé à utiliser la classe jdialog qui me permettrait d'afficher dans une fenetre l'arborescence des fichiers sur mon ordinateur, mais je n'ai pas réussi à la retrouver sur developez.com.
Voici un peu plus d'information sur ma demande:
Je souhaite en faite récuperer le contenu du fichier afin d'y effectuer une ou des regxp.
Il me faudrait donc une méthode qui prenne en paramettre le chemin d'acces au fichier à peu pres comme sa:
public String recupFichier (string chemin){ //'chemin' est le chemin pour acceder au fichier dont on doit
recuperer le contenu
string contenu = ""; //contiendra le contenu du fichier
String pos = System.getProperties().getProperty("user.dir"); //contient le chemin dans lequel on se trouve
l'application qu'on lance
.
.
.
}
J'ai pensé à utiliser la classe jdialog qui me permettrait d'afficher dans une fenetre l'arborescence des fichiers sur mon ordinateur, mais je n'ai pas réussi à la retrouver sur developez.com.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voici le code de l'application, si vous voulez la faire marcher, je peut vous passer les 3 autres classes qui marche.
package version;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import resultat.AfficheResultat;
import services_à_tester.Regexp1;
public class Version2 {
/*
*Version1: récupère une chaine de caractere à analyser
*/
public void version() {
//On lance une boucle infini pour le programme:
for (;;){
//on met à zero le nombre de lancement de la regxp et la chaine de caractère
int nombre = -1;
String valu = "";
//on demande de saisir la chaine de caractères:
System.out.println("saisisser le chemin d'acces au fichier ou exit pour revenir au choix de version ");
//on assigne la saisie à une variable:
valu = lecture();
//si la valeur est "exit", on sort de l'application:
if (valu.equals("exit")){
break;
}else{
/*
* ici, mettre le code qui permettrait de recuperer
* le contenu du fichier dont le chamin à été mis en parametre
* dans une variable string contenu
*/
}
//choix du nombre de fois que doit être lancée la regxp
while (nombre == -1){
//on demande de saisir le nombre d'éxecution de la regxp:
System.out.println("saisisser le nombre de fois que vous voulez lancer la regexp");
//on assigne la saisi à une variable:
String nbr = lecture();
//si l'objet saisi est un nombre, on le transfert dans une variable de type integer:
if (nbr.matches("[0-9]+")){
nombre = Integer.parseInt(nbr);
System.out.println("la valeur "+nombre+" a été assignée à la variable nombre.");
lancement(contenu,nombre);
}
//si l'objet saisi est un nombre négatif, on affiche un message d'erreur:
else if (nbr.matches("-[0-9]+")){
System.out.println("attention, veuillez saisir un nombre positif");
}
//sinon(si l'objet saisi n'est donc pas un nombre) on affiche un message d'erreur:
else{ System.out.println("attention, veuillez saisir un nombre");
}
}
break;
}
}
/*
*On lance dans cette méthode la regxp autant de fois que demandé par l'utilisateur
*puis on lance l'affichage du resultat
*/
public void lancement(String str, int nb){
Regexp1 reg1 = new Regexp1();
try {
long startTime = System.currentTimeMillis();
String reg = reg1.start(str, nb);
long endTime = System.currentTimeMillis();
AfficheResultat Aff = new AfficheResultat();
Aff.resultat(startTime, endTime, reg, nb);
}
catch (java.lang.ArrayIndexOutOfBoundsException e) {
}
}
/*
*Permet de récupérer le texte (String)
*/
public static String lecture() {
BufferedReader stdin = new BufferedReader ( new InputStreamReader(System.in));
String ret;
try {
ret = stdin.readLine();
}catch (IOException e){ret = null;}
return ret;
}
}
package version;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import resultat.AfficheResultat;
import services_à_tester.Regexp1;
public class Version2 {
/*
*Version1: récupère une chaine de caractere à analyser
*/
public void version() {
//On lance une boucle infini pour le programme:
for (;;){
//on met à zero le nombre de lancement de la regxp et la chaine de caractère
int nombre = -1;
String valu = "";
//on demande de saisir la chaine de caractères:
System.out.println("saisisser le chemin d'acces au fichier ou exit pour revenir au choix de version ");
//on assigne la saisie à une variable:
valu = lecture();
//si la valeur est "exit", on sort de l'application:
if (valu.equals("exit")){
break;
}else{
/*
* ici, mettre le code qui permettrait de recuperer
* le contenu du fichier dont le chamin à été mis en parametre
* dans une variable string contenu
*/
}
//choix du nombre de fois que doit être lancée la regxp
while (nombre == -1){
//on demande de saisir le nombre d'éxecution de la regxp:
System.out.println("saisisser le nombre de fois que vous voulez lancer la regexp");
//on assigne la saisi à une variable:
String nbr = lecture();
//si l'objet saisi est un nombre, on le transfert dans une variable de type integer:
if (nbr.matches("[0-9]+")){
nombre = Integer.parseInt(nbr);
System.out.println("la valeur "+nombre+" a été assignée à la variable nombre.");
lancement(contenu,nombre);
}
//si l'objet saisi est un nombre négatif, on affiche un message d'erreur:
else if (nbr.matches("-[0-9]+")){
System.out.println("attention, veuillez saisir un nombre positif");
}
//sinon(si l'objet saisi n'est donc pas un nombre) on affiche un message d'erreur:
else{ System.out.println("attention, veuillez saisir un nombre");
}
}
break;
}
}
/*
*On lance dans cette méthode la regxp autant de fois que demandé par l'utilisateur
*puis on lance l'affichage du resultat
*/
public void lancement(String str, int nb){
Regexp1 reg1 = new Regexp1();
try {
long startTime = System.currentTimeMillis();
String reg = reg1.start(str, nb);
long endTime = System.currentTimeMillis();
AfficheResultat Aff = new AfficheResultat();
Aff.resultat(startTime, endTime, reg, nb);
}
catch (java.lang.ArrayIndexOutOfBoundsException e) {
}
}
/*
*Permet de récupérer le texte (String)
*/
public static String lecture() {
BufferedReader stdin = new BufferedReader ( new InputStreamReader(System.in));
String ret;
try {
ret = stdin.readLine();
}catch (IOException e){ret = null;}
return ret;
}
}
Voici la fonction statique à ajouter à ta classe qui te permettra de lire ton fichier :
Le retour de cette fonction peut être:
- null -> cas d'erreur de lecture
- "" / vide -> rien a lire
- une chaine de caractère non nulle et non vide -> le contenu du fichier
Là où tu as mis tes commentaires dans le code, tu remplace par l'appel à la fonction :
Pour ce qui est de la partie "demande à l'utilisateur le chemin d'accès au fichier via une fenetre", puisque tu n'a pas d'application graphique tu ne peux pas utiliser l'objet JChooseFile dans ton programme, il te reste donc plus qu'à demander à l'utilisateur de le rentrer comme tu lui demande de rentrer les chiffres.
public static readFile ( String theFileName ){ InputStreamReader flog = null; LineNumberReader llog = null; String myLine = null; String myConcatLines = ""; try{ flog = new InputStreamReader(new FileInputStream("path du fichier a remplacer") ); llog = new LineNumberReader(flog); while ((myLine = llog.readLine()) != null) { // --- Ajout de la ligne au contenu myConcatLines += myLine; } }catch (Exception e){ // --- Gestion erreur lecture du fichier (fichier non existant, illisible, etc.) System.err.println("Error : "+e.getMessage()); return null; } return myConcatLines; }
Le retour de cette fonction peut être:
- null -> cas d'erreur de lecture
- "" / vide -> rien a lire
- une chaine de caractère non nulle et non vide -> le contenu du fichier
Là où tu as mis tes commentaires dans le code, tu remplace par l'appel à la fonction :
contenu = readFile("chemin du fichier");
Pour ce qui est de la partie "demande à l'utilisateur le chemin d'accès au fichier via une fenetre", puisque tu n'a pas d'application graphique tu ne peux pas utiliser l'objet JChooseFile dans ton programme, il te reste donc plus qu'à demander à l'utilisateur de le rentrer comme tu lui demande de rentrer les chiffres.
Salut à tous moi aussi j'aimerais pouvoir ouvrir un fichier en donnant le "path" à partir du poste de travail mais j'ai un problème voici quelques lignes de mon code:
a = new InputStreamReader(new FileInputStream("abce.txt") );
b = new LineNumberReader(a);
while ((ligne = b.readLine()) != null)
{
System.out.println(ligne+ " ") ;
}
Tout se passe bien quand je copie/colle le fichier à ouvrir DANS le dossier que j'ouvre avec mon application JAVA (BlueJ).
Mais dès que je mets le chemin par exemple:
a = new InputStreamReader(new FileInputStream("D:\ abce.txt") );
Il y a un message d'erreur à la compilation qui est : illegal escape character pour le caractère " \ "
Pouvez-vous m'aider ?
a = new InputStreamReader(new FileInputStream("abce.txt") );
b = new LineNumberReader(a);
while ((ligne = b.readLine()) != null)
{
System.out.println(ligne+ " ") ;
}
Tout se passe bien quand je copie/colle le fichier à ouvrir DANS le dossier que j'ouvre avec mon application JAVA (BlueJ).
Mais dès que je mets le chemin par exemple:
a = new InputStreamReader(new FileInputStream("D:\ abce.txt") );
Il y a un message d'erreur à la compilation qui est : illegal escape character pour le caractère " \ "
Pouvez-vous m'aider ?