Hallo Leute,
ich habe mir neulich einen Code programmiert, dessen Aufgabe es ist eine HTML-Datei zu nehmen, alle Tags zu löschen und nur noch den eigentlichen Text zu behalten und als .txt Datei rauszuschreiben. Es funktioniert auch...nur nervt es mich ein bisschen, dass es Ewigkeiten (!) dauert bis die paar Dateien, die ich habe, auch wirklich bearbeitet werden.
Daher wollte ich euer geschultes Auge mal über meinen Anfängercode drüberfliegen lassen. Vielleicht könnt ihr mir bei der Effizienz helfen?
ich habe mir neulich einen Code programmiert, dessen Aufgabe es ist eine HTML-Datei zu nehmen, alle Tags zu löschen und nur noch den eigentlichen Text zu behalten und als .txt Datei rauszuschreiben. Es funktioniert auch...nur nervt es mich ein bisschen, dass es Ewigkeiten (!) dauert bis die paar Dateien, die ich habe, auch wirklich bearbeitet werden.
Daher wollte ich euer geschultes Auge mal über meinen Anfängercode drüberfliegen lassen. Vielleicht könnt ihr mir bei der Effizienz helfen?
Code:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HtmlToText {
HashMap<Number, String> realFiles = new HashMap<Number, String>();
public void einlesen(String file) throws IOException {
if (file.endsWith(".html")) {
String s;
String end = "";
BufferedReader in = new BufferedReader(new FileReader(file));
BufferedWriter out = new BufferedWriter(new FileWriter(new File(
file.substring(0, file.length()-5) + ".txt")));
StringBuilder sb = new StringBuilder();
while ((s = in.readLine()) != null) {
sb.append(s+"\t");
//s = in.readLine();
//
end = sb.toString().replaceAll("\\<.*?>","");
//s = "";
}
String patternStr = "\\s+";
String replaceStr = " ";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(end);
String neu = matcher.replaceAll(replaceStr);
out.write(neu);
in.close();
out.flush();
out.close();
}
}
public void dokumente() {
int counter = 0;
File directory = new File("c:/keys/I_12a");
File[] files = directory.listFiles();
for (int k=0;k<files.length;k++){
if(files[k].toString().endsWith(".html")){
realFiles.put(counter, files[k].toString());
counter++;
}
}
}
public static void main(String[] args) {
HtmlToText ado = new HtmlToText();
ado.dokumente();
for (int i = 0; i < ado.realFiles.size(); i++) {
try {
ado.einlesen(ado.realFiles.get(i));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}