begin process at 2010 02 10 00:53:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

Ecrire dans un fichier texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ecrire dans un fichier texte

mardi 19 avril 2005 à 22:22:32 | Ecrire dans un fichier texte

emiraMh

bonjour,
j'ai developpé un programme réseau qui fait l'écoute du port 514 et enregistre les paquets reçus dans des fichiers textes (logs).
L'écoute du port se fait dans une boucle while (true)
mon prob c'est que chaque fois que mon prog reçoit un paquet il écrase le paquet déjà enregistré dans l'itération précédente de façon que je ne récupère, à la fin, dans le fichier texte que le dernier paquet reçu.
voila mon prog, keske je dois ajouter ou modifier ?
si vous pouvez m'aider, je serai très reconnaissante !

package logmanager;
import java.io.*;
import java.net.*;

public class Listen implements Runnable {
  static final int port=514;
  String LogEquip;
  public DatagramSocket socket;
  Thread EcouteThread;
  public void run ()
  {
       byte[] memoire = new byte[2500];
       DatagramPacket reception = new DatagramPacket(memoire,memoire.length);
       InetAddress[] tabadr = new InetAddress[10];   // tableau ou je vais enregistrer
                                                                              // les adresses des équipements
                                                                              // sources des paquets
       String log;
       int k;
       k=1;

for (int i=0; i<tabadr.length; i++)                     // création de 10 fichiers textes           
                                                                     //  pour 10 équipements
{
try {
       LogEquip="LogEquip"+i+".txt";
       FileOutputStream NouveauFichier = new FileOutputStream(LogEquip);
           }
catch (FileNotFoundException e){}
}

 try {
       DatagramSocket socket =new DatagramSocket(port);
    
while(true){

       socket.receive(reception);
       InetAddress address = reception.getAddress();
       for (int i=0; i<k; i++)               // enregistrement des adresses sources des paquets
        { if (tabadr[i]!=address)
           {tabadr[k]=address;
            k=k+1;}
         }
       
       log=new String(reception.getData(),0,reception.getLength());

       System.out.println("données reçues de "+reception.getAddress()+" sur le port "
                          +reception.getPort()+" :\n"+log );

       for (int i=0; i<tabadr.length; i++)
     {  if (tabadr[i]==address)
        { LogEquip="LogEquip"+i+".txt";
          FileWriter fw= new FileWriter(LogEquip);
          PrintWriter pw= new PrintWriter(fw);
          pw.println("données reçues de "+reception.getAddress()+" sur le port "
                 +reception.getPort());
          pw.println(log);
          pw.close();
          fw.close();
        }
      }

          }
     }
    catch (Exception ex) {}
   }

public void Start ()
    {
      EcouteThread = new Thread (this);
      EcouteThread.start();
    }

public void Stop ()
      {
        this.socket.disconnect();
        this.socket.close();

      }
}




  Emira

mercredi 20 avril 2005 à 08:41:40 | Re : Ecrire dans un fichier texte

wildcat31

Bonjour,

la solution est d'utiliser :
public FileWriter(File file,
                  boolean append)
           throws IOException
Constructs a FileWriter object given a File object. If the second argument is true, then bytes will be written to the end of the file rather than the beginning.

mercredi 20 avril 2005 à 09:03:18 | Re : Ecrire dans un fichier texte

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut en faiteton problème vient du fait que par defaut java ne place pas les fichier en mode append pour faire une tel chose il te suffit de déclarer ton FileWrite comme suit :
FileWriter fw= new FileWriter(LogEquip, true);
PrintWriter pw= new PrintWriter(fw);


pour info le mode append passé à true place l'offset en fin de fichier


WORA
jeudi 21 avril 2005 à 11:55:37 | Re : Ecrire dans un fichier texte

Sensei01



 Sensei01

slt,
Sinon y a ca aussi :

public static void Ecrire_fichier(String FilePath,String text)
 {
  ///////////////////////////////////////////////////////////
  // Cette fonction permet d'écrire dasn un fichier, il                     //
  // suffit de lui passer comme argument le chemin d'accès             //
  // du fichier et la ligne de texte à écrire. on écrit                        //
  // toujours à la fin du fichier                                                       //
  ///////////////////////////////////////////////////////////
  try
  {
  File f = new File(FilePath);
  FileWriter fichier =  new FileWriter(f,true);
  BufferedWriter writfich = new BufferedWriter(fichier);
  writfich.write(text);
  writfich.newLine();
  writfich.flush();
  writfich.close();
  fichier.close();
  }catch (Exception e)
  {  }

il te suffit alors d'apeller cette méthode a chaque fois que tu veux ecrire un truc
jeudi 21 avril 2005 à 12:46:22 | Re : Ecrire dans un fichier texte

wildcat31

Oui, ça marche, mais ce n'est pas très intéressant d'utiliser cela si on a plusieurs ligne à écrire dans le même fichier, parce que on ouvre et ferme sans cesse le fichier.



Cette discussion est classée dans : public, port, int, reception, logequip


Répondre à ce message

Sujets en rapport avec ce message

Mon code bug pour un truc trop con [ par hallardc ] Voila je suis a l Institut International du Multimédia et je ne cromprends pas pourkoi mon source de java ne marche pas, si kelk un pouvait jeter un c Erreur d'execution: java.lang.NullPointerException [ par amjad ] A la compilation d'un projet java3D j'obtient le message d'erreur suivant :Exception in thread "main" java.lang.NullPointerException at javax.vecmath JDialog avec tableau [ par Suffren ] Bonjour,je cherche à réaliser un JDialog avec des onglets qui donnent des tableaux avec Swing et AbstractTableModel mais çà ne marche pas.Existe-t-il Grand débutant s'empêtre dans les classes [ par jekif ] J'essaie de créer mes premières classes pour une interface graphique. J'essaie en particulier de créer pour l'instant des boites de dialogues type Con Appel de classes semblables [ par colruyt ] Bonjour à tous,Voici le problème qui se pose à moi :Dans ma classe principale , je fait appel à 2 classes et chacunes de celle-ci affiche le contenu d actualier un JTable [ par devj ] je n'arrive pas à rafraichir mon JTable à l'ecrande facon dynamique (sur saisie de param ma requete s'execute, passe le resultset à MyModel, génére la Probleme de tableaux. [ par canvin ] Bonojour,Voici mon problème. j'ai fait une classe tableaux avec un constructeur. : public class Tableau{ private int tab[]; pu Appel d'une classe depuis une autre [ par colruyt ] Bonjour a tous ,J'ai une classe qui fonctionne bien exécutée seule par contre quand je l'appelle depuis une autre , cela ne fonctionne pas !Si quelqu' recuperation de valeur [ par sheorogath ] voila je dois faire des crackme pour mon site et le site d'un copain mais voila j'ai fait le plus dur . mais j'arrive pas recuperer la valeur d'un jte ajouter dans cette table des button (JAVA JTABLE JBUTTON) [ par zarziszita ] salut a toutes le monde mon probleme que j'ai envie ajouter deux button a la fin de table une des button permet ajouter un ligne .le methode main se t


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales