begin process at 2012 02 12 02:15:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

modification d'un fichier


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

modification d'un fichier

mercredi 21 novembre 2007 à 14:12:36 | modification d'un fichier

ghofrane

Bonjour,
je possède un fichier texte qui a cette structure :

# mon routeur 8
define host{
use linux_server
host_name routeur8
alias routeurout
address 192.168.8.1
}

# mon routeur 9
define host{
use linux_server
host_name routeur9
alias routeurin
address 192.168.54.1
}

et en possédant une adresse ip je dois parcourir le fichier et supprimer tout le bloc concernant cette adresse.
j'ai utilisé deux fichiers mais le problème est que il ya des lignes à supprimer avant d'arriver à l'adresse et une ligne par la suite. je lis le fichier en séquentiel normalemnt et je stocke dans un autre fichier.
Donc je ne supprime qu'une ligne et je garde tjs une partie du bloc.

Merci de votre aide.


mercredi 21 novembre 2007 à 15:13:12 | Re : modification d'un fichier

Twinuts

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

commence par lire ton fichier en te basant sur les blocs soit '{' et '}' tu peux le faire assez simplement à l'aide d'un petit regexp ensuite tu te fais un objet représentant un bloc et tu gagnera ton temp...
voici la regexp que tu peux utiliser :
[...]
//lecture du fichier
StringBuilder builder = new StringBuilder();
final Scanner sc = new Scanner(new FileInputStream(fileName));
while (sc.hasNext())
    builder.append(sc.nextLine().trim());
sc.close();
builder.trimToSize();
//préparation de la regexp
final Pattern p = Pattern.compile("\\{[^\\}\\{]*\\}");
Matcher m = p.matcher(builder.toString());
int begin = 0, end = 0;
//parse l'expression
while (m.find()) {
    begin = m.start();
    end = m.end();
    [...]//ici tu commence à analyser le bloque
    //prépare pour le prochain bloc
    builder = new StringBuilder(builder.substring(end));
    m = p.matcher(builder);
}
[...]
si tu veux une idée de ce que tu peux faire, tu peux regarder ce poste ICI

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
mercredi 21 novembre 2007 à 15:18:39 | Re : modification d'un fichier

KenZara

Bonjour,

Je vais essayer de récapituler ce que tu veux faire pour mieux comprendre:
Tu as un fichier qui contient par exemple:

define host{
    use linux_server
    host_name routeur8
    alias routeurout
    address 192.168.8.1
}

Tu veux que si l'adresse est le 192.168.8.1, supprimer tout le bloc à partir de "define host" jusqu'au " } " ?
Si tel est ton souhait, il y a une facon de faire, c'est de récupérer à chaque fois le bloc en entier dans un String (Donc define host { ......... } ) et voir si ton String contient bien l'adresse que tu cherches, si tel est le cas, tu supprimers le bloc (ou tu ne l'écris pas ds ton nouveau fichier) sinon tu l'ajoutes.

Kenza
mercredi 21 novembre 2007 à 15:48:04 | Re : modification d'un fichier

ghofrane

salut,
merci pour vos réponses.
Je vais essayer de faire comme vous dites.
Merci encore.
mercredi 28 novembre 2007 à 12:43:00 | Re : modification d'un fichier

ghofrane

bonjour,
j'ai essayé de faire en regexp et j'ai juste modifier ton code en ajoutant une partie pour l'analyse du bloc:

try {                File file = new File ("/home/user/host.txt");
                                 //lecture du fichier
                               StringBuilder builder = new StringBuilder();
                               final Scanner sc = new Scanner(new FileInputStream("/home/user/host.txt"));
                               while (sc.hasNext())
                               {
                                   builder.append(sc.nextLine().trim());
                               }
                               sc.close();
                               builder.trimToSize();
                               //préparation de la regexp
                               final Pattern p = Pattern.compile("\\{[^\\}\\{]*\\}");
                               Matcher m = p.matcher(builder.toString());
                               int begin = 0, end = 0;
                               //parse l'expression
                               BufferedWriter sortiroutt = new BufferedWriter(new FileWriter("/home/user/routeursupp.txt", true));
                               while (m.find()) {
                                   begin = m.start();
                                   end = m.end();
                                        
                                   //analyser le bloc
                               if(m.equals("192.162.54.150"))
                               {  // écrire le bloc à supprimer dans un autre fichier
                                   BufferedWriter sortirout = new BufferedWriter(new FileWriter("/home/user/routeur_gardé.txt", true));
                                   sortirout.write(builder.toString()+"\n");
                                   sortirout.close();
                               
                                  
                               }
                               else {
                                   // écrire le bloc dans un fichier temporaire
                                       sortiroutt.write(builder+"\n");   
                               }
                               }
                               sortiroutt.close();
                               //prépare pour le prochain bloc
                                   builder = new StringBuilder(builder.substring(end));
                                   m = p.matcher(builder);  
      } catch(java.io.IOException e) {
               e.printStackTrace();
            }
         
Le problème est que à la sotie il me retourne un fichier où il y a plusieurs blocs et répétés plusieurs fois. et il n'arrive pas à supprimer le bloc voulu. mais j'arrive pas à voir comment je peux accéder au bloc et l'analyser. j'ai essayé avec bloc.tostring.containes aussi.

merci beaucoup.

Ps: pour l'analyse du bloc j'ai essayé avec bloc.tostring.containes aussi
jeudi 29 novembre 2007 à 09:58:39 | Re : modification d'un fichier

ghofrane

Bonjour,
merci le problème est résolu:
j'ai juste ajouté:
     String host = m.group();
                                   if (host.contains("192.168.54.150")) {
                                       // Le bloc contient l'adresse IP que l'on ne veut pas
                                       BufferedWriter sortirout = new BufferedWriter(new FileWriter("/home/user/sup.txt", true));
                                         sortirout.write(host+"\n");
                                         sortirout.close();
                                   } else {....}

Merci enore.
                             


Cette discussion est classée dans : fichier, adresse, host, modification, routeur


Répondre à ce message

Sujets en rapport avec ce message

Ligne d'une adresse, déduire la voix associée du FANTOIR [ par yray ] Le fichier FANTOIR est un fichier qui contient l'ensemble des voies de toutes les communes de franceJe saisie une ligne de caractères : 31 Bis rue des StringTokenizer et adresse url [ par RustyNail ] Voila mon probleme:J'ai une adresse url comme ceci : http//www.zearez/.../.../fichier.mp3Et je voudrais juste récupérer le nom du fichier fichier.mp3 Modification de l'icone d'un .jar [ par athelinos ] Bonjour, Je souhaiterai personnaliser l'icone de mon fichier .jar Dans l'absolue, lors de la création d'un .jar, celui-ci a un icone par défaut, qui Modification de fichier XML [ par hayfekh ] Salut,Je travaille avec Dom et je voudrais effectuer une modification du fichier XML pour cela je doit avoir une copie du fichier initial pour en effe Modification d'un jar [ par Lyorix ] Bonjour, Voici mon problème : Je souhaite créer un programme java qui puisse ajouter dans un jar existant un fichier texte contenu dans un répertoir upload d'un fichier en java a partir d'une adresse [ par Khenissi ] Bonjour comment faire un upload d'un fichier en java/ jsp directement a partir d'une adresse. sans passage par la balise merci d'avance Trouver une adresse mail dans un fichier word [ par vallytiana ] Bonjour,Voici mon problème et je suis une débutante en Java,J'ai un répertoire qui contient plusieurs CV word. Le but étant de pourvoir récupérer tout Carnet d'adresse en java [ par toledo9 ] Bonjour, Je suis débutant en langage Java et j'aimerais faire un petit programme "Carnet d'adresse" : Fichier de contacts professionnels Je souhait


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 2,480 sec (4)

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