Correction code,ecrit dans une fichier dans un endroit precis

cs_fraisa1985 Messages postés 52 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 15 avril 2013 - 21 mars 2008 à 23:19
 Utilisateur anonyme - 22 mars 2008 à 10:22
Salut a tous,
J'ai prgrammé une fonction ecrire_dans_une_fichier(String path_fichier,String string_ajouté,int position)
qui permet d'ajouter une string a une fichier dans un endroit precis sans ecraser aucune chose(car j'ai trouvé la classe RandomAccessFile mais son probleme qu'elle ecrase les cacactéres situé a la position position
:si vous connaissez d'autres moyens pour faire ce que j'ai fait c'est du bienvenue ).
Cette foction est valable pour une seule appel,cependant lorsque je l'utilise plus qu'une fois elle affiche des resultats bizarres et voila
pour cela un class qui illustre cette probleme:
code:
package convertisseur;


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


public class File_youssef1985 extends File {
public BufferedReader src=null;
 public BufferedWriter dest=null;
 
 
 public static void ecrire_fichier(RandomAccessFile f,String s,int pos) throws IOException
 {
  
  
  
  
 File temp1= new File("temp1meguebliyoussef.txt");
  
File temp2=new File("temp2meguebliyoussef.txt");
 
 RandomAccessFile partie1=new RandomAccessFile(temp1,"rw");
 
 RandomAccessFile partie2=new RandomAccessFile( temp2,"rw");
 
 copier(f,partie1,0,pos);
  
    copier(f,partie2,pos,f.length());
 
   partie1.seek(partie1.length());
  
    partie1.writeBytes(s);
 
    partie1.seek(partie1.length());
 
    int c;
 
    partie2.seek(0);
 
   while((c=partie2.read())!=-1)
  
   {
  
    partie1.write(c);
  
   }
 
 
//   copier(partie1,f,0,f.length());
   partie1.seek(0);
   f.seek(0);
   while((c=partie1.read())!=-1)
   
   {
  
    f.write(c);
  
   }
 temp1.deleteOnExit();
 temp2.deleteOnExit();
   partie1.close();
     
   partie2.close();
     
   f.close(); 
     
  
  


 }
 public static void  copie_BufferedReader (BufferedReader original,BufferedWriter copie) throws IOException {
  int c;
  while ((c = original.read()) != -1)
  copie.write(c);


  
  original.close();
  copie.close();
  }




 public static boolean copier( RandomAccessFile sourceFile, RandomAccessFile destination ,int positiondebut,long positionfin)
 {
         boolean resultat = false;
        
         // Declaration des flux
        
         java.io.FileOutputStream destinationFile=null;
        
         try {
                 // Création du fichier :
                
                 // Ouverture des flux
                
                
                 // Lecture par segment de 0.5Mo
                 byte buffer[]=new byte[1*1];
                 int nbLecture;
                 sourceFile.seek(positiondebut);
               
                 while( (nbLecture = sourceFile.read()) != -1 && sourceFile.getFilePointer()<=positionfin) {
                  {  
                  
                   
                   destination.write(nbLecture);                  
                  }}
                
                 // Copie réussie
                 resultat = true;
         } catch( java.io.FileNotFoundException f ) {
                
         } catch( java.io.IOException e ) {
                
         } finally {
                 // Quoi qu'il arrive, on ferme les flux
                 try {
                        
                 } catch(Exception e) { }
                 try {
                      
                 } catch(Exception e) { }
         }
         return( resultat );
 }
 
 
 
 public static boolean copier( File source, File destination )
 {
         boolean resultat = false;
        
         // Declaration des flux
         java.io.FileInputStream sourceFile=null;
         java.io.FileOutputStream destinationFile=null;
        
         try {
                 // Création du fichier :
                 destination.createNewFile();
                
                 // Ouverture des flux
                 sourceFile = new java.io.FileInputStream(source);
                 destinationFile = new java.io.FileOutputStream(destination);
                
                 // Lecture par segment de 0.5Mo
                 byte buffer[]=new byte[512*1024];
                 int nbLecture;
                
                 while( (nbLecture = sourceFile.read(buffer)) != -1 ) {
                         destinationFile.write(buffer, 0, nbLecture);
                 }
                
                 // Copie réussie
                 resultat = true;
         } catch( java.io.FileNotFoundException f ) {
                
         } catch( java.io.IOException e ) {
                
         } finally {
                 // Quoi qu'il arrive, on ferme les flux
                 try {
                         sourceFile.close();
                 } catch(Exception e) { }
                 try {
                         destinationFile.close();
                 } catch(Exception e) { }
         }
         return( resultat );
 }
 public static void ecrire_dans_une_fichier(String s,String t,int pos) throws IOException
 {
  RandomAccessFile g=new RandomAccessFile(s,"rw");


  //copier(g,new RandomAccessFile("temp1.txt","rw"),0,g.length());
  ecrire_fichier(g,t,pos);
 g.close();
  
  
 }
public static void main(String[] args) throws IOException, IOException
{
 
  
 
 ecrire_dans_une_fichier("youcef120.html","chaine ajouté1",17);
 ecrire_dans_une_fichier("youcef120.html","chaine ajouté2",33);
}
}

1 réponse

Utilisateur anonyme
22 mars 2008 à 10:22
Je préfère ça personnellement :

http://www.rgagnon.com/javadetails/java-0073.html

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
Rejoignez-nous