B
BastianSeb
Gast
Hallo zusammen
Ich bin derzeit damit beschäftigt mir eine Programm zu schreiben mit dem ich ein Textformat in ein anderes umwandeln kann. Ich habe ähnlich Sachen im Bezug auf XML Anwendungen zwar gefunden, jedoch leider ist meine Eingabedatei kein XML-File und ich kann somit die dort verwendeten Bibliotheken nicht verwenden.
Bisher bin ich soweit das ich ein Text-File einlesen kann,dieses mir Zeilenweise per BufferReader herauslese und dann die Inhalte via StringTokenizer in seine Bestandteile zerlege und auch ausgebe.
Hier tauchen meine ersten beiden Problem auf.
1. Es wird so lang Zeilenweise ausgelesen, bis eine Leerzeile kommt.
Das würde ich eher abwandeln wollen in: Es wird solange ausgelesen, bis "End" im Textdokument kommt
2. Leider muss ich bisher wissen wie viele Einträge pro spalte stehen und was dieser für mich bedeutet.
Bsp.: Inputfile:
Tag 1 Sport Weitsprung Name Hannes Bewertung 5 Anmerkung (keine/ sozusagen "null") Vertretung (keine)
Name Johannes Bewertung 2,3
Name Hans Bewertung 3 Anmerkung Armbruch
Sport Hochsprung Name Hannes Bewertung 5 Anmerkung (keine/ sozusagen "null") Vertretung (keine)
Name Johannes Bewertung 2,3 Vertretung (keine)
Name Hans Bewertung 3 Anmerkung Armbruch
Tag 2 Sport Schwimmen .... wie Tag 1 nur die Einträge sind wieder unterschiedlich.
Ich habe als eindeutige Definitionen innerhalb des "segmente (Tag)" wie Sport, Name, Anmerkung, Bewertung ... Leider sind diese pro Zeile aber nicht sortiert. Fest ist die Bezeichnung und das nach einem " " der dazugehörige wert kommt.
Ich müsste mir eine Art Filter schreiben der nach den jeweiligen begriffen suchen kann. Ich hab aber ka wie und ob das überhaupt funktioniert.
Warum das Ganze. Wie geschrieben möchte ich das in ein Neues Textdokument übergeben. Genau genommen soll das eine SQL datei werden mit denen ich die Daten in die DB einbinden kann.
Das Schema dieser SQL würde ich vorfertigen und die entsprechenden Werte aus der Text-File nur noch hinzufügen. (Hier werden bestimmt wieder neue Fragen von mir kommen aber damit will ich euch noch nicht belasten und auch sehen wie weit ich wieder alleine komme.)
Mein Quelltext:
PS. Ja ich weiß das die Ausgabedatei im Moment noch völlig unabhängig vom Input ist. Im Moment bin ich noch nicht soweit belesen, das ich das in Verbindung mit der BufferedReader setzen kann.
Ich bin derzeit damit beschäftigt mir eine Programm zu schreiben mit dem ich ein Textformat in ein anderes umwandeln kann. Ich habe ähnlich Sachen im Bezug auf XML Anwendungen zwar gefunden, jedoch leider ist meine Eingabedatei kein XML-File und ich kann somit die dort verwendeten Bibliotheken nicht verwenden.
Bisher bin ich soweit das ich ein Text-File einlesen kann,dieses mir Zeilenweise per BufferReader herauslese und dann die Inhalte via StringTokenizer in seine Bestandteile zerlege und auch ausgebe.
Hier tauchen meine ersten beiden Problem auf.
1. Es wird so lang Zeilenweise ausgelesen, bis eine Leerzeile kommt.
Das würde ich eher abwandeln wollen in: Es wird solange ausgelesen, bis "End" im Textdokument kommt
2. Leider muss ich bisher wissen wie viele Einträge pro spalte stehen und was dieser für mich bedeutet.
Bsp.: Inputfile:
Tag 1 Sport Weitsprung Name Hannes Bewertung 5 Anmerkung (keine/ sozusagen "null") Vertretung (keine)
Name Johannes Bewertung 2,3
Name Hans Bewertung 3 Anmerkung Armbruch
Sport Hochsprung Name Hannes Bewertung 5 Anmerkung (keine/ sozusagen "null") Vertretung (keine)
Name Johannes Bewertung 2,3 Vertretung (keine)
Name Hans Bewertung 3 Anmerkung Armbruch
Tag 2 Sport Schwimmen .... wie Tag 1 nur die Einträge sind wieder unterschiedlich.
Ich habe als eindeutige Definitionen innerhalb des "segmente (Tag)" wie Sport, Name, Anmerkung, Bewertung ... Leider sind diese pro Zeile aber nicht sortiert. Fest ist die Bezeichnung und das nach einem " " der dazugehörige wert kommt.
Ich müsste mir eine Art Filter schreiben der nach den jeweiligen begriffen suchen kann. Ich hab aber ka wie und ob das überhaupt funktioniert.
Warum das Ganze. Wie geschrieben möchte ich das in ein Neues Textdokument übergeben. Genau genommen soll das eine SQL datei werden mit denen ich die Daten in die DB einbinden kann.
Das Schema dieser SQL würde ich vorfertigen und die entsprechenden Werte aus der Text-File nur noch hinzufügen. (Hier werden bestimmt wieder neue Fragen von mir kommen aber damit will ich euch noch nicht belasten und auch sehen wie weit ich wieder alleine komme.)
Mein Quelltext:
Java:
package streams;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class DateiLeseTest extends JFrame implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
File file;
public DateiLeseTest(String title)
{
super(title);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JButton loadfile = new JButton("Datei laden");
JButton safefile = new JButton("Datei speichern");
this.setSize(new Dimension(800,600));
Dimension Bild = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((Bild.width-800)/2,(Bild.height-600)/2);
this.setTitle("Trafo");
this.setBackground(new Color(194,255,255));
setLayout(null);
loadfile.setBounds(550,300,100,20);
safefile.setBounds(550,350,100,20);
add(safefile);
add(loadfile);
loadfile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
file = fc.getSelectedFile();
liesDatei();
}
});
safefile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
JFileChooser fc = new JFileChooser();
fc.showSaveDialog(null);
file = fc.getSelectedFile();
schreibDatei();
}
});
}
public void liesDatei()
{
BufferedReader br;
String s;
try
{
br = new BufferedReader(new FileReader(file));
while ((s = br.readLine()) != null)
{
StringTokenizer st = new StringTokenizer(s, " ");
// StringTokenizer st = new StringTokenizer(s, " ");
// while (st.hasMoreTokens()) {
String nr = st.nextToken();
String rechts = st.nextToken();
String hoch = st.nextToken();
String zusatz = st.nextToken();
System.out.println(nr + " " + hoch + " " + rechts);
// }
}
br.close();
}
catch (IOException io)
{
System.out.println(io.getMessage());
}
}
public static void schreibDatei()
{
File f = null;
// Ausgabe in Datei
try
{
f = new File("temp/test.dat");
System.out.println(System.getProperty("user.dir"));
System.out.println(f.getAbsolutePath());
FileWriter fw = new FileWriter(f);
System.out.println();
fw.write("Das ist eine Testausgabe\r\nTextzeile 2");
fw.close();
}
catch (IOException io)
{
System.out.println(io.getMessage());
}
// Einlesen und anzeigen
String lese = "";
int x = 0;
try
{
FileReader fr = new FileReader(f);
while ((x = fr.read()) != -1)
{
lese += (char) x;
}
fr.close();
}
catch (IOException io)
{
System.out.println(io.getMessage());
}
System.out.println(lese);
}
public static void main(String[] args)
{
DateiLeseTest d = new DateiLeseTest("Ein-/Ausgabe einer Datei");
d.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
PS. Ja ich weiß das die Ausgabedatei im Moment noch völlig unabhängig vom Input ist. Im Moment bin ich noch nicht soweit belesen, das ich das in Verbindung mit der BufferedReader setzen kann.