Ich möchte eine Datei lesen und Text an dieselbe Datei anhängen, basierend auf einigen Kriterien. Das ist mein Code.Lesen und Schreiben in dieselbe Datei - Ausgabeformat ändert sich
public static void writeOutputToFile(ArrayList<String> matchingCriteria) {
//Provide the folder which contains the files
final File folder = new File("folder_location");
ArrayList<String> writeToFile = new ArrayList<String>();
//For each file in the folder
for (final File fileEntry : folder.listFiles()) {
try (BufferedReader br = new BufferedReader(new FileReader(fileEntry))) {
String readLine = "";
while ((readLine = br.readLine()) != null) {
writeToFile.add(readLine);
}
try (FileWriter fw = new FileWriter(fileEntry); BufferedWriter bw = new BufferedWriter(fw)) {
for (String s : writeToFile) {
boolean prefixValidation = false;
//Check whether each line contains one of the matching criterias. If so, set the condition to true
for (String y : matchingCriteria) {
if (matchingCriteria.contains(y)) {
prefixValidation = true;
break;
}
}
//Check if the prefixes available in the string
if (prefixValidation) {
if (s.contains("name=\"") && !(s.contains("id=\""))) {
//Split the filtered string by ' name=" '
String s1[] = s.split("name=\"");
/*Some Code*/
//Set the final output string to be written to the file
String output = "Output_By_Some_Code";
//Write the output to the file.
fw.write(output);
//If this action has been performed, avoid duplicate entries to the file by continuing the for loop instead of going through to the final steps
continue;
}
}
fw.write(s);
bw.newLine();
}
fw.flush();
bw.flush();
//Clear the arraylist which contains the current file data to store new file data.
writeToFile.clear();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
Dieser Code funktioniert einwandfrei. Das Problem ist, dass die Ausgabe nicht genau wie die Eingabedatei ist. Die mehreren Zeilen in der Eingabedatei, an die ich etwas angehängt habe, werden in dieselbe Zeile in der Ausgabedatei geschrieben.
Zum Beispiel füge ich ein ID-Attribut für diese Elemente hinzu und es wird hinzugefügt, aber die Ausgabe wird als eine einzige Zeile geschrieben.
<input type="submit" <%=WebConstants.HTML_BTN_SUBMIT%> value="Submit" />
<input type="hidden" name="Page" value="<%=sAction%>" />
<input type="hidden" name="FileId" value="" />
Meine Frage ist, bin ich etwas falsch, so dass die Formatierung tun wird immer vermasselt?
Wenn ja, gibt es etwas zu tun, um genau wie die Eingabedatei zu drucken?
Eine Hilfe wird sehr geschätzt. Vielen Dank im Voraus :)
kein fix, aber Sie brauchen nicht Ihre, der Leser/Schreiber zu schließen, weil Sie mit 'Try-mit-resources'-Statements – Lino
Dank. Kraft der Gewohnheit :) –
Ist alles in einer einzigen Zeile geschrieben? oder nur ein paar Zeilen? – Lino