Probleme de suppression dans un fichier
Résolu
Amira
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour a tous;
j'ai un fichier texte ayant le format suivant:
String1
String1String2
String1String2String3
....
String1Strin2String3.....String(i)...String(n)
et je voudrais supprimer certaines parties de ce fichier pour avoir le format suivant:
String1
String2
String3
...
String(i)
String(n)
j'ai essayé avec le code suivant, mais mon fichier resultat est toujours vide:
Est ce que qlq peut m'aider svp?
j'ai un fichier texte ayant le format suivant:
String1
String1String2
String1String2String3
....
String1Strin2String3.....String(i)...String(n)
et je voudrais supprimer certaines parties de ce fichier pour avoir le format suivant:
String1
String2
String3
...
String(i)
String(n)
j'ai essayé avec le code suivant, mais mon fichier resultat est toujours vide:
public static void FileFormatted(String inputFile,String outputFile)
{
String FileContent = readFile(inputFile,
StandardCharsets.UTF_8);
String[] FileSentences = FileContent.split("[\n]");
for (int i = 0; i < FileSentences.length; i++)
{
StringBuilder builder = new StringBuilder();
for(int j=1;j<FileSentences.length;j++)
{
int index= FileSentences[j].indexOf("FileSentences[i]");
String temp=FileSentences[j].substring(index);
FileSentences[j]=FileSentences[j].replaceAll(temp," ");
builder.append(FileSentences[j]+ "\n");
}
writeIntoFile(builder, outputFile, true);
}
}
public static void writeIntoFile(StringBuilder stringBuilder,
String txtFilePath, boolean append) {
File file = new File(txtFilePath);
// if file doesn't exists, then create it
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileWriter fw;
try {
fw = new FileWriter(file.getAbsoluteFile(), append);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(stringBuilder.toString());
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Est ce que qlq peut m'aider svp?
2 réponses
-
Bonjour,
Tout cela paraît un peu confus.
Pour commencer, tu faisFileContent.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\n
tu 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 pasFileSentences[j].indexOf("FileSentences[i]");qu'il faut que tu cherches maisindexOf(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.-
-
Il y a beaucoup de choses à revoir dans ton code !
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 bouclefor (int j
est très compliqué pour ce que tu cherches à faire.
Une astuce pour ton problème : commences par la fin et remontes.
-
-
Bonjour;
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();
}