SOS, ajouter une ligne au debut du fichier

Fermé
dani3000 Messages postés 58 Date d'inscription jeudi 9 mai 2013 Statut Membre Dernière intervention 4 juin 2013 - 23 mai 2013 à 13:02
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 23 mai 2013 à 19:17
Bonjour,

J'ai mon code qui ecrit dont un fichier un mot.
le probleme quand je l'execute deux fois le contenue est ecrasee;
pouvez vous me le corriger ,afin qu'il ajoute le mot au debut.

et merci :D

//code

public static void PMOs(String a,String mot){

int count = 1;

try{


File ff=new File("C:\\Users\\WorkD\\Documents\\NetBeansProjects\\window\\"+fichier+".txt"); // définir l'arborescence


FileWriter ffw = new FileWriter(ff);

ffw.write(" "+mot);
ffw.write("\r");


ffw.close();
}
catch (Exception e) {}


}
}
A voir également:

2 réponses

Utilisateur anonyme
23 mai 2013 à 13:46
Salut salut,

Je ne sais pas si comme en PHP tu peux placer le pointeur au début du fichier.
Sinon tu récupères tout ce que contient le fichier, tu ajoutes ce que tu veux au début et tu réécris en écrasant.
0
dani3000 Messages postés 58 Date d'inscription jeudi 9 mai 2013 Statut Membre Dernière intervention 4 juin 2013 2
23 mai 2013 à 14:09
oui il y a cette foction qui permet de placer le curseur au debut.

mais est ce qu'il y a une autre facon mieux que de copier le contenue et le réinsérer.??
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
23 mai 2013 à 19:17
Dans tous les cas, il faudra lire et réécrire tout le contenu dans le fichier car on ne peux pas agrandir un fichier par le début, il faut donc décaler tout les caractères !
C'est donc le genre d'opérations très lourdes qu'il faut absolument utiliser le moins souvent possible. L'idéal étant de ne le faire qu'une seule fois dans ton programme. Si tu as plusieurs textes à ajouter, enregistres les d'abord dans un StringBuilder avant d'appeler la méthode d'ajout dans le fichier.

Maintenant passons à la pratique, avec un RandomAccessFile

public static void addAtBegin(File file, String text) throws IOException
{
    RandomAccessFile access = new RandomAccessFile(file,"rw");
    
    long length = access.length();
    if (length>Integer.MAX_VALUE)
    {
        access.close();
        throw new IOException("Fichier trop grand");
    }
    
    byte[] buf = new byte[(int) length];
    access.readFully(buf);
    
    access.seek(0);
    access.write(text.getBytes());
    access.write(buf);
    access.close();        
}
0