Hey,
ich habe folgende Problemstellung:
Ich möchte verschiedene .txt Dateien, die denselben Aufbau haben, nach bestimmten Informationen durchsuchen, und diese Informationen dann per XStream als XML Format abspeichern, so dass man Sie in Excel aufrufen kann.
Ich bin bereits soweit, dass ich eine beliebige Datei aiswählen kann, die gewünschten Informationen per Pattern.match herausfiltere, und diese in einer ArrayListe ausgeben kann. Die Elemente stehen dann so da: [Ergebnis1, ERg.2, erg. 3 ...]
Nun weiß ich nicht, wie ich jedes Einzelne Ergebnis einem String übergeben kann, wenn jede Textdatei eine unterschiedliche Anzahl von Ergebnissen hat? Mit einer For Schleife in irgendeiner Form eventuell?
Und danach möchte ich dann von jedem String wiederum mit einer For Schleife und mit Substring das Ergebnis noch einmal unterteilen, für die spätere XML Ausgabe.
Hier der bisherige Code:
Ich habe es schon mal mit dieser For schleife versucht ( probeweise als Konsolenausgabe, da ich nicht weiß wie ich in eine Liste schreibe)
Da hat er auch jedes einzelne Ergebnis ausgegeben, jedoch hat er vor JEDEM Ergebnis 2(!) mal HOLEPFAD() aufgerufen.
Ich stecke nun fest.
Danke soweit!
ich habe folgende Problemstellung:
Ich möchte verschiedene .txt Dateien, die denselben Aufbau haben, nach bestimmten Informationen durchsuchen, und diese Informationen dann per XStream als XML Format abspeichern, so dass man Sie in Excel aufrufen kann.
Ich bin bereits soweit, dass ich eine beliebige Datei aiswählen kann, die gewünschten Informationen per Pattern.match herausfiltere, und diese in einer ArrayListe ausgeben kann. Die Elemente stehen dann so da: [Ergebnis1, ERg.2, erg. 3 ...]
Nun weiß ich nicht, wie ich jedes Einzelne Ergebnis einem String übergeben kann, wenn jede Textdatei eine unterschiedliche Anzahl von Ergebnissen hat? Mit einer For Schleife in irgendeiner Form eventuell?
Und danach möchte ich dann von jedem String wiederum mit einer For Schleife und mit Substring das Ergebnis noch einmal unterteilen, für die spätere XML Ausgabe.
Hier der bisherige Code:
Java:
package FileWandler;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFileChooser;
public class Auslesen{
private static String inhalt=new String("");
private static String s = new String("");
public static String holePfad() // Benutzereingabe speichert den Pfad der gewünschten Datei zwischen
{
String pfad = null;
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
int returnVal = fc.showOpenDialog(null);
File f;
if (returnVal == JFileChooser.APPROVE_OPTION)
{
f = fc.getSelectedFile();
pfad = f.getPath();
}
return pfad;
}
public static String lesen(){ // Mit Hilfe des Pfads aus holePfad wird die Datei ausgelesen
try {
BufferedReader in = new BufferedReader(new FileReader(holePfad()));
String zeile = null;
while ((zeile = in.readLine()) != null) {
inhalt = inhalt.concat(zeile); // Die Methode Auslesen.lesen gibt als String die Textdatei in einer langen Zeile zurück
}
} catch (IOException e) {
e.printStackTrace();
}
return inhalt;
}
public static List<String> felderfilter() { // Hier filtere ich die Datei und sie wird als Liste<String> Returned
s = Auslesen.lesen(); // Hier wird der String eingelesen
Matcher matcher = Pattern.compile( "\\d?\\d?\\d?\\d?\\d\\p{Blank}..\\p{Blank}\\d\\p{Blank}\\p{Upper}\\p{Upper}\\p{Upper}..................................................\\p{Upper}\\p{Upper}\\p{Blank}.").matcher( ss );
final List<String> result = new ArrayList<String>();
while (matcher.find()) {
result.add(matcher.group());
}
return result;
}
public static void main (String[] args) {
}
}
Ich habe es schon mal mit dieser For schleife versucht ( probeweise als Konsolenausgabe, da ich nicht weiß wie ich in eine Liste schreibe)
Java:
for (int i = 0; i < felderfilter().size(); i = i + 1) {
System.out.println(felderfilter().get(i));
Da hat er auch jedes einzelne Ergebnis ausgegeben, jedoch hat er vor JEDEM Ergebnis 2(!) mal HOLEPFAD() aufgerufen.
Ich stecke nun fest.
Danke soweit!