Probleme de suppression dans un fichier
Résolu/Fermé
Amira
-
Modifié par KX le 3/04/2016 à 18:43
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 4 avril 2016 à 18:23
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 4 avril 2016 à 18:23
A voir également:
- Probleme de suppression dans un fichier
- Forcer suppression fichier - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
3 avril 2016 à 19:01
3 avril 2016 à 19:01
Bonjour,
Tout cela paraît un peu confus.
Pour commencer, tu fais
Exemple :
Si tu ne coupes que sur
Or
De plus ce n'est pas
Ensuite quelques manipulations de chaînes de caractères qui peuvent se simplifier...
Attention : si tu as plusieurs fois la même chaîne de caractères dans ta ligne, indexOf va renvoyer la première. Donc
Sur la deuxième méthode maintenant, ça ne sert à rien de créer le fichier s'il n'existe pas, il sera créé automatiquement si tu écris dedans.
Pour simplifier tout ton programme, je t'invite à regarder les méthodes Files.readAllLines et Files.write, tu pourras ainsi te concentrer uniquement sur la partie manipulation des lignes sans te soucier de l'écriture dans le fichier.
Tout cela paraît un peu confus.
Pour commencer, tu fais
FileContent.split("[\n]")mais si tu es sous Windows il va y avoir un
\régalement.
Exemple :
"String1\r\nString1String2\r\nString1String2String3\r\n"
Si tu ne coupes que sur
\ntu va avoir ceci dans ton tableau :
"String1\r" "String1String2\r" "String1String2String3\r"
Or
"String1\r"ne commences pas la chaîne
"String1String2\r"...
De plus ce n'est pas
FileSentences[j].indexOf("FileSentences[i]");qu'il faut que tu cherches mais
indexOf(FileSentences[i])car c'est la valeur qui est dans le tableau qu'il faut chercher !
Ensuite quelques manipulations de chaînes de caractères qui peuvent se simplifier...
Attention : si tu as plusieurs fois la même chaîne de caractères dans ta ligne, indexOf va renvoyer la première. Donc
"String1String2String1String4"pourrait devenir
"String2String1String4"ce qui n'est pas ce que tu veux.
Sur la deuxième méthode maintenant, ça ne sert à rien de créer le fichier s'il n'existe pas, il sera créé automatiquement si tu écris dedans.
Pour simplifier tout ton programme, je t'invite à regarder les méthodes Files.readAllLines et Files.write, tu pourras ainsi te concentrer uniquement sur la partie manipulation des lignes sans te soucier de l'écriture dans le fichier.
Bonjour;
j'ai essayé avec ce bout de code et ça marche à la perfection:
j'ai essayé avec ce bout de code et ça marche à la perfection:
public static void main(String[] args) throws IOException {
FileReader fileReader = new FileReader("test.txt");
BufferedReader br = new BufferedReader(fileReader);
int startPosition = 0;
String line;
ArrayList<String> items = new ArrayList<String>();
while((line = br.readLine() ) != null)
{
items.add(line.substring(startPosition, line.length()));
System.out.println(line.substring(startPosition, line.length()));
startPosition = line.length();
}
write("test2.txt", items);
}
public static void write (String filename, ArrayList<String> items) throws IOException{
BufferedWriter outputWriter = null;
outputWriter = new BufferedWriter(new FileWriter(filename));
for (String item : items) {
outputWriter.write(item);
outputWriter.newLine();
}
outputWriter.flush();
outputWriter.close();
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 avril 2016 à 18:23
4 avril 2016 à 18:23
Pour info, la solution en 4 lignes :
List<String> lines = Files.readAllLines(Paths.get("test.txt")); for (int i = lines.size() - 1; i > 0; i--) lines.set(i, lines.get(i).substring(lines.get(i - 1).length())); Files.write(Paths.get("test2.txt"), lines);
3 avril 2016 à 19:38
Merci pour tous tes remarques mais a vrai dire je ne sais pas trop comment y procéder pour corriger cette erreur!!!!
3 avril 2016 à 19:49
Commences déjà par faire le split sur \r\n, ou utiliser Files.readAllLines comme je te l'ai indiqué, ça va déjà te permettre de travailler sur les bons String...
Ensuite dans tout le reste je pense qu'on peut plus ou moins tout supprimer, ta boucle est très compliqué pour ce que tu cherches à faire.
Une astuce pour ton problème : commences par la fin et remontes.