supprimer ligne d'un fichier

wiss20000
supprimer ligne d'un fichier

salut,
est ce que quel'un peut me fournir un code qui me permet de supprimer les 3 première lignes d'un fichier et les 2 dernière :lol: :lol: :lol: :lol:
Merci.

fredericmazue

Avec ou sans virgules dans le fichier :?: :twisted:
:wink: :wink: :wink:

wiss20000

il ny a pas un problème avec les virgule
c'est simplement un fichier que je veut modifié :!: :!: :!: :!: :!: :!: :!:

fredericmazue

Oui je voulais dire "avec ou sans virgule dans le fichier à modifier"
:!: :!: :!: :!: :!: :!:

Bon j'ai voulu te taquiner un peu quoi :lol:

Maintenant soyons sérieux. je ne demande pas mieux que te t'apporter un peu d'aide. Sincèrement. Mais ne demande pas du code tout cuit. Surtout qu'après que vas venir nous dire que ce n'est pas ce que tu voulais. :wink:
Montre un peu le code (ou un extrait significatif) que tu as écrit pour essayer de supprimer des lignes et très certainement tu trouveras quelqu'un pour t'aider.
Et sois précis dans tes questions. Aide nous un peu à t'aider quoi...

wiss20000

j'ai réussi à supprimer les 3 premiers mais les 2 derniers pas encore
et voici comment j'ai supprimer les 3 premiers

 for (int i=0;i<3;i++) {
		try {
 
			File file = new File("EXCHO00.csv");
			RandomAccessFile tools = new RandomAccessFile(file, "rw"); // read-write
			tools.readLine(); // goto second line
			long length = tools.length() - tools.getFilePointer(); // except first line
			byte[] nexts = new byte[(int) length];
			tools.readFully(nexts); // read the others
			tools.seek(0); // return to start
			tools.write(nexts); // insert just 1 line before
			tools.setLength(nexts.length); // truncate the last duplicated line
			tools.close(); // flush all
 
		} catch (Exception error) {
			error.printStackTrace();
		}
 
	}
fredericmazue

Je lis ton code, et j'ai du mal à croire ce que j'y vois.
Enfin que tu ais grand mal à supprimer des lignes ça je veux bien le croire :lol:
Tu te rends compte de ce qu'il fait ton code n'est-ce pas ?
Tu lis et tu écris en même temps en boucle dans un fichier à accès direct.
Ca y a pas à dire, faut oser.
Evidemment tu sais que quand tu appelles setLength, si jamais le fichier est tronqué par cette invocation sauvage et incongrue, il le sera de toutes façons en fin. Ca va pas être trop pratique pour supprimer les lignes du début ça....
Ensuite tu lis avec readline de RandomAccessFile qui accepte plusieurs délimiteurs différents pour les fins de lignes. Et en plus c'est à prioiri un fichiers Microsoft que tu lis (puisque CSV) et il se trouve que Microsoft à une façon personnelle de traiter les fins de ligne....
Enfin bref la démarche ne va pas du tout. Lire et écrire simultanément en plein milieu d'un fichier, vraiment ça ne se fait pas.
Dis moi, enlève moi un doute... tu n'as quand même pas choisi la classe randomAccessFile parce qu'il y ale mot Access dedans. Hein ? Dis moi que ce n'est pas ça ?

Je t'ai donné la démarche dans mon tout premier post. Je te la répète:

- tu ouvres ton fichier avec FileReader
- tu crées un BufferedReader en passant le FileReader prcédemment crée à son constructeur.
- tu lis toutes les lignes avec la méthodes readline du BufferedReader
- chaque ligne que tu lis, tu la ranges dans un Vector ou un ArrayList comme tu voudras.
- Ensuite... certes je ne l'avais pas dit tellement ça tombe sur le sens.... tu crées *un autre* fichier (pourquoi pas avec FileWriter et BufferedWriter) et dedans et tu y écris tes lignes une à une en les prenant dans le Vector, sauf bien sûr les trois premières et les trois dernières. Et Attention si tu veux garder un saut de lignes entre chaque lignes que tu écris, n'oublie pas d'appler newline entre chaque (tu verras dans la Javadoc)

wiss20000

merci pour tout je vais esseyé et je vais voir :?
encore une fois merci

fredericmazue

Tu vois qu'en montrant un petit peu de code les choses avancent plus facilement :)
Essaie donc, et si ça ne va pas poste ici le code qui te pose problème, et j'essaierai à nouveau de t'aider.