Copier la premiere ligne de mon fichier texte en java

Fermé
Luc - 30 oct. 2012 à 10:35
 codetuto - 30 nov. 2012 à 00:58
Bonjour,
Voila j'ai un premier fichier texte puis dans un second fichier texte, je dois copier la premier mot de chaque ligne.
Exemple de ligne dans mon premier fichier :
charly;2012;10;11;paris
--> Je dois copier dans le deuxième fichier 'charly'
J'arrive à lire mon fichier mais il met impossible de copier !
Je n'arrive pas du tout cette histoire de copie !
D'avance merci
A voir également:

5 réponses

Tiens :



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

public class Lecture_Fichier {

    public static void main(String[] args) {
        BufferedReader LecteurBufferise = null;
        String Chemin = "C:/Users/sbellec.IFR/Desktop/ProduitMondial_test/En_tete.txt";
        String ligneDonnee;
        boolean eof = false;
        try {

//Ouverture du Fichier
            LecteurBufferise = new BufferedReader(new FileReader(Chemin));

            while (eof != true) {
//Lecture de la ligne
                ligneDonnee = LecteurBufferise.readLine();
                if (ligneDonnee != null) {
                    String[] mesMots = ligneDonnee.split(";");

                    File file = new File("C:/Users/sbellec.IFR/Desktop/ProduitMondial_test/" + mesMots[0] + ".txt");
                    if(!file.exists()){ // si le fichier n'existe pas, on le crée
                       file.createNewFile(); 
                    }
                    
                    BufferedWriter EcrireBufferise = new BufferedWriter(new FileWriter(file));  //utilisation du fichier
                    EcrireBufferise.write(ligneDonnee); // on écrit toute la ligne
                    EcrireBufferise.flush();
                    EcrireBufferise.close();
                } else {
                    eof = true;
                }
            }
        } catch (FileNotFoundException ex) {
            System.out.println("Fichier Non Trouvé !!");
        } catch (IOException ex) {
            System.out.println("Erreur lecture ligne fichier !!");
        } finally {
            try {
                LecteurBufferise.close();
            } catch (IOException ex1) {
                System.out.println("Erreur fermeture fichier !!");
            }
        }
    }
}



Si tu veux apprendre le plus simple reste de réfléchir un minimum au sujet avant de poser une question.

On n'est pas la pour faire tes devoirs à ta place.
1
Bonjour,

J'ai du mal à comprendre. Si vous pouvez lire le fichier depuis le code, il suffit de récupérer ce que vous lisez dans une variable, puis de l'injecter dans le fichier.


InputStream ips=new FileInputStream(fichier1);  
InputStreamReader ipsr=new InputStreamReader(ips); 
BufferedReader br=new BufferedReader(ipsr); 

FileWriter fw = new FileWriter (fichier2);  
BufferedWriter bw = new BufferedWriter (fw); 
PrintWriter fichierSortie = new PrintWriter (bw);  

String ligne; 
while ((ligne=br.readLine())!=null){ 
 fichierSortie.println(ligne.split(';')[0]);   
 //la fonction split permet de découper un fichier par rapport à un délimiteur de texte, ici le ";", puis retourne le résultat sous forme de tableau 
 fichierSortie.close(); 
} 
br.close();  
bw.close(); 

0
Merci beaucoup bigbybob de me répondre!
Mais c'est mon premier programme en java et je galère beaucoup.
J'ai un code de lecture de mon premier fichier qui marche niquel. Le voici :

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Lecture_Fichier {
public static void main(String[] args) {
BufferedReader LecteurBufferise = null;
String Chemin = "C:/***/****/****/******/En_tete.txt";
String ligneDonnee;
boolean eof = false;
try {

//Ouverture du Fichier
LecteurBufferise = new BufferedReader(new FileReader(Chemin));
while (eof != true) {
//Lecture de la ligne
ligneDonnee = LecteurBufferise.readLine();
if (ligneDonnee != null) {
System.out.println(ligneDonnee);
}
else {
eof = true;
}
}
}
catch (FileNotFoundException ex) {
System.out.println("Fichier Non Trouvé !!");
}
catch (IOException ex) {
System.out.println("Erreur lecture ligne fichier !!");
}
finally {
try {
LecteurBufferise.close();
}
catch (IOException ex1) {
System.out.println("Erreur fermeture fichier !!");
}
}
}
}

Maintenant est ce que tu peux m'aider à insérer ton code dans le mien ! Tu as très bien compris ma demande !
D'avance merci
0
Avec les ajouts

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

public class Lecture_Fichier {

    public static void main(String[] args) {
        BufferedReader LecteurBufferise = null;
        BufferedWriter EcrireBufferise = null;  //AJOUT
        String Chemin = "C:/Users/sbellec.IFR/Desktop/ProduitMondial_test/En_tete.txt";
        String CheminEcriture = "C:/Users/sbellec.IFR/Desktop/ProduitMondial_test/MON_FICHIER_POUR_ECRIRE.txt"; //AJOUT
        String ligneDonnee;
        boolean eof = false;
        try {

//Ouverture du Fichier
            LecteurBufferise = new BufferedReader(new FileReader(Chemin));
            EcrireBufferise = new BufferedWriter(new FileWriter(CheminEcriture)); //AJOUT
            while (eof != true) {
//Lecture de la ligne
                ligneDonnee = LecteurBufferise.readLine();  
                if (ligneDonnee != null) {
                    System.out.println(ligneDonnee);
                    String[] mesMots = ligneDonnee.split(";");  //AJOUT D'UN TABLEAU DE MOTS
                    EcrireBufferise.write(mesMots[0]); //ON ECRIT LE PREMIER MOT
                    EcrireBufferise.flush();    //ON DIT AU FICHIER DE SE METTRE A JOUR
                } else {
                    eof = true;
                }
            }
        } catch (FileNotFoundException ex) {
            System.out.println("Fichier Non Trouvé !!");
        } catch (IOException ex) {
            System.out.println("Erreur lecture ligne fichier !!");
        } finally {
            try {
                LecteurBufferise.close();
                EcrireBufferise.close();    // ON FERME LE BUFFER
            } catch (IOException ex1) {
                System.out.println("Erreur fermeture fichier !!");
            }
        }
    }
}
0
C'est parfait merci bigbybob ! Est ce que c'est possible de créer un fichier pour chaque variable trouvée ? Si oui je vais approfondir mon programme !
Grand merci :)
0
Oui bien sur, il suffit de modifier le code pour instancier le EcrireBufferise dans le while() au lieu de le faire avant. En n'oubliant pas de modifier le nom du fichier sur lequel on va écrire.
0
Ok mais en fait je voudrais que chaque nom de fichier prenne la valeur de la variable !
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
30 oct. 2012 à 12:39
Bonjour Luc,
Quand tu dit que tu arrive à lire ton fichier, peux-tu récupérer le premier mot de chaque ligne ?
Mets-tu ces mots dans un tableau ou faut-il écrire les mots l'un en dessous de l'autre dans le fichier dès que tu l'a trouvé ?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
30 oct. 2012 à 12:52
Pour écrire dans un fichier en mode ajout::
try{
// Ouvrir le fichier (création du fichier)
FileWriter fw = new FileWriter("NomFichierTexte.txt", false); 

// Ouvrir le fichier (en append pour écrire à la fin du fichier, donc ne pas écraser les données déjà écrites
FileWriter fw = new FileWriter("NomFichierTexte.txt", true); 

// Pour chaque mot (donc appelé autant de fois que tu as un mot à écrire)
 writer.write(texte,0,texte.length());
}catch(IOException ex){
    ex.printStackTrace();
  exit(1);    
} finally{

// Fermer le fichier
 if(writer != null){
     writer.close();
  }
0
Mon problème n'est pas totalement résolu en fait puisque j'ai oublié une étape.
Mon premier problème est clos cependant, dans un second temps il faut que dans mes fichiers créés je récupère chacune des lignes qui correspondent à cette variable.
je m'explique, dans mon 1er fichier j'ai ces lignes :
Navire1;2012;5;12;toto
Navire1;2012;6;19;fanfan
Navire1;2012;8;4;titi
Navire1;2012;1;7;tutu
Navire2;2012;11;19;francj
Navire2;2012;10;20;yo
Navire2;2012;6;6;jeje

Il faut donc que les fichiers 'Navire1' et 'Navire2' soient créés --> RESOLU
Maintenant par contre, dans mon fichier 'Navire1', je dois retrouver les lignes :
Navire1;2012;5;12;toto
Navire1;2012;6;19;fanfan
Navire1;2012;8;4;titi
Navire1;2012;1;7;tutu

Et ce n'est pas le cas puisque je récupère le nom du fichier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C'est bon je débute ! Un peu d'aide ne fait pas de mal ! Surtout que ca récupère que la première ligne mais pas les suivantes !
Donc la ligne :
Navire1;2012;5;12;toto est bien dedans par contre les 3 suivantes non

Navire1;2012;6;19;fanfan
Navire1;2012;8;4;titi
Navire1;2012;1;7;tutu
0
Autant pour moi j'avais oublié un truc.

BufferedWriter EcrireBufferise = new BufferedWriter(new FileWriter(new File(""), true));


Le "true" à la fin permet d'écrire à la fin du fichier. Autrement tu réécris depuis le début du fichier à chaque ouverture
0
Tu remplace celle dans le code qui est quasi-identique par celle là...

Le seule différence vient du true à la fin.
0
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.TooManyListenersException;

import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;

public class commSerie implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;

static BufferedReader inputStream;
static OutputStream outputStream;

static SerialPort serialPort;

static Thread readThread;

public commSerie(String portname) throws NoSuchPortException {
CommPortIdentifier portId;

portId = CommPortIdentifier.getPortIdentifier(portname);
try {
serialPort = (SerialPort) portId.open("PortSerie", 2000);
} catch (PortInUseException e) {
}
try {
inputStream = new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
outputStream = serialPort.getOutputStream();
} catch (IOException e) {
}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {
}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
readThread = new Thread(this);
readThread.start();
}

public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}

public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
String chaineLue = new String();
try {
chaineLue = (String) inputStream.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(chaineLue);
if (chaineLue=="ACK"){
try {
ecritPort("sio 1:1 2:1 3:0 4:0");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ecritPort("sio 1:0 2:0 3:0 4:0");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;
}
}

public static void ecritPort (String chaine) throws IOException {
int c;
for (int i=0; i < chaine.length(); i++) {
c = chaine.charAt(i);
outputStream.write(c);
}
outputStream.write(0x0d); // retour chariot
}

public static void close() throws IOException {
inputStream.close();
outputStream.close();
serialPort.close();
}
/*public static void version(){
System.out.println("Version ");
inputStream.ecritPort("fw");
}

public static void tague(){
System.out.println("Passez votre carte sur le RFID ");
Thread.sleep(2000);
inputStream.ecritPort("sv");
}

public static void liste(){
System.out.println("Liste des cartes ");
inputStream.ecritPort("ls");
}

public static void LED(){
int l=0;
if(l==0){
inputStream.ecritPort("sio 1:1 2:1 3:0 4:0");
l=1;
System.out.println("Led allumé");
}
else {
inputStream.ecritPort("sio 1:0 2:0 3:0 4:0");
l=0;
System.out.println("Led éteinte");
}
}*/


}


Ensuite on a


import javax.comm.*;

import com.sun.comm.Win32Driver;
import java.io.*;

public class RFID_01 {

public static void main(String[] args) throws NoSuchPortException, PortInUseException, IOException, InterruptedException {
int l=0;
//Récuperation du port en argument
String port = args[0];
//initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
//lancement de l'appli
@SuppressWarnings("unused")
commSerie comSerie = new commSerie(port);

//"interface utilisateur"
System.out.println("__________________Menu___________________");
System.out.println("|Taper v pour connaitre la version |");
System.out.println("|Taper t pour taguer une carte |");
System.out.println("|Taper s pour supprimer une carte |");
System.out.println("|Taper l pour lister les cartes |");
System.out.println("|Taper o pour allumer ou éteindre LED |");
System.out.println("|Taper q pour quitter |");
System.out.println("|________________________________________|");
//construction flux lecture

BufferedReader clavier =
new BufferedReader(new InputStreamReader(System.in));
//lecture sur le flux entrée.
String lu = null;
do
{
lu = clavier.readLine();

if (lu.equals("v")){ //commSerie.version();
System.out.println("Version ");
commSerie.ecritPort("fw");
}

if (lu.equals("t")){
//commSerie.tague() ;
System.out.println("Passez votre carte sur le RFID ");
Thread.sleep(2000);
commSerie.ecritPort("sv");
}

if (lu.equals("s")){
//commSerie.tague() ;
System.out.println("Passez votre carte sur le RFID ");
Thread.sleep(2000);
commSerie.ecritPort("del");
}

if (lu.equals("l")){ //commSerie.liste();
System.out.println("Liste des cartes ");
commSerie.ecritPort("ls");
}

if (lu.equals("o")) {
//commSerie.LED();

if(l==0){
commSerie.ecritPort("sio 1:1 2:1 3:0 4:0");
l=1;
System.out.println("Led allumé");
}
else {
commSerie.ecritPort("sio 1:0 2:0 3:1 4:1");
l=0;
System.out.println("Led éteinte");
}
}
}

while (!lu.equals("q"));

commSerie.close();
}
}
0
public class GPRMC {

public static String UTC_TIME;
public static String Status;
public static String Latitude;
public static String N_S_Ind;
public static String Longitude;
public static String E_W_Ind;
public static String Speed_Over_Groung;
public static String Course_Over_Groung;
public static String Date;
public static String Magnetic_Variation;
public static String Checksum;
public static String Diff;
public static boolean Valid;

public GPRMC()
{Valid=false;}

public static void update(String chaine)
{
int deb_index = 7; int fin_index;
fin_index = chaine.indexOf(",", deb_index);
UTC_TIME = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
if (fin_index != deb_index)
{
Status = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
Latitude = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
N_S_Ind = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
Longitude = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
E_W_Ind = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
Speed_Over_Groung = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);

Course_Over_Groung = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
Date = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf(",", deb_index);
Magnetic_Variation = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
fin_index = chaine.indexOf("*", deb_index);


if (fin_index == -1)
fin_index = deb_index;
Diff = chaine.substring(deb_index, fin_index);
deb_index = fin_index + 1;
Checksum = chaine.substring(deb_index, chaine.length());
// calcul du checksum XOR
int calc_check = 0;
for (int idx = 1; idx != chaine.length() - 3; idx++)
{ calc_check = calc_check ^ chaine.charAt(idx);}
if (calc_check != Integer.parseInt(Checksum,16))
System.out.println("Erreur de checksum");
else Valid = true;
}
else
{
System.out.println("Coordonnées non valides");
}
}



public static void main(String[] args) {
update("$GPRMC,150949.000,A,4917.1034,N,00100.2702,E,0.29,211.19,231012,,,A*67");

}

}




Ensuite





import javax.comm.*;
import com.sun.comm.Win32Driver;
import java.io.*;
import java.util.*;

public class GPSPos extends Thread implements SerialPortEventListener {

private CommPortIdentifier portId;
private SerialPort serialPort;
private BufferedReader fluxLecture;
private static boolean running;
private GPGGA gpgga = new GPGGA();
private ouvre_navigateur navigateur = new ouvre_navigateur();

/**
* Constructeur qui r�cup�re l'identifiant du port et lance l'ouverture.
*/
public GPSPos(String port) {
//initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
//r�cup�ration de l'identifiant du port
try {
portId = CommPortIdentifier.getPortIdentifier(port);
} catch (NoSuchPortException e) {
}

//ouverture du port
try {
serialPort = (SerialPort) portId.open("ModeEvenement", 2000);
} catch (PortInUseException e) {
}
//r�cup�ration du flux
try {
fluxLecture =
new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
} catch (IOException e) {
}
//ajout du listener
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {
}
//param�trage du port
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(
4800,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
System.out.println("port ouvert, attente de lecture");
}
public void run() {
running = true;
while (running) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}
//fermeture du flux et port
try {
fluxLecture.close();
} catch (IOException e) {
}
serialPort.close();
}
public void selChaine(String chaine) {
if (chaine.contains("$GPGGA"))
{
gpgga.update(chaine);
if (gpgga.Valid) {stopThread();
System.out.println("Coordonnées mise à jours");

String url = "http://maps.google.com/maps?q=49.2861N,1.0077E";
navigateur.displayURL(url);}
}
}
/**
* M�thode de gestion des �v�nements.
*/
public void serialEvent(SerialPortEvent event) {
//gestion des �v�nements sur le port :
//on ne fait rien sauf quand les donn�es sont disponibles
switch (event.getEventType()) {
case SerialPortEvent.BI :
case SerialPortEvent.OE :
case SerialPortEvent.FE :
case SerialPortEvent.PE :
case SerialPortEvent.CD :
case SerialPortEvent.CTS :
case SerialPortEvent.DSR :
case SerialPortEvent.RI :
case SerialPortEvent.OUTPUT_BUFFER_EMPTY :
break;
case SerialPortEvent.DATA_AVAILABLE :
String chaineTxt = new String();
try {
//lecture du buffer et affichage
chaineTxt = (String) fluxLecture.readLine();
System.out.println(chaineTxt);
selChaine(chaineTxt);
} catch (IOException e) {
}
break;
}
}
/**
* Permet l'arr�t du thread
*/
public void stopThread() {
running = false;
}
/**
* M�thode principale
*/
public static void main(String[] args) {
//R�cuperation du port en argument
String port = args[0];
//lancement de l'appli
GPSPos gpspos=new GPSPos(port);
gpspos.start();
//"interface utilisateur"
System.out.println("taper q pour quitter");
//construction flux lecture
BufferedReader clavier =
new BufferedReader(new InputStreamReader(System.in));
//lecture sur le flux entr�e.
try {
String lu = clavier.readLine();
while (!lu.equals("q")) {
}
} catch (IOException e) {
}
gpspos.stopThread();
}
}
0