Programm zum erstellen einer tabelle aus textdateien

Status
Nicht offen für weitere Antworten.

Weiti

Mitglied
Hallo, ich habe einen Ordnern mit einer großen Anzahl Unterordnern, die alle einen Film und eine EPG.txt enthalten die in der ersten Zeile den Filmnamen und in der zweiten Zeile das Genre stehen hat. Nun möchte ich alle diese Informationen in einer Tabelle listen. Spalte 1: Name, Spalte 2: Genre hab im Moment noch einen nicht lauffähigen Ansatz:
größtes Problem ist das ich keine Tabellen mit Java machen kann...

Java:
/**
 *
 */
package listIt_package;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
 
/**
 * @author Weiti
 *
 */
public class Main {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
    	
		find_EPG("E:\"Filme_fertig");  	
    }
    
    public static void write(String s){
    	File datei = new File("output.txt");
    	FileWriter schreiber = null;
		try {
			schreiber = new FileWriter(datei);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
    	try {
			schreiber.write(s);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
    	try {
			schreiber.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		


        
    }
    
    
	public static void find_EPG(String path) {
		File f = new File(path);
		File [] files = f.listFiles();
				      
				   
		for (int i=0; i< files.length; i++) {
			if (files[i].isDirectory()) {
				find_EPG(files[i].toString());		  
			} else {
				if (files[i].toString().endsWith(".txt")) {
					read(path);
					
				}
			}
		}	
	}

	public static void read(String path){
		File f = new File(path);
		try {
			BufferedReader b = new BufferedReader(new FileReader(f));
			 try {
				write(b.readLine());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // Reader nutzen
       

		
	}
}
 

Weiti

Mitglied
In Swing... Damit kenne ich mich nicht aus. ich dachte eher man könnte es per FileWriter abspeichern, aber halt als Tabelle die man dann mit Exel, Calc, etc öffnen kann.

Edit: Ich kann Dateien als .csv abspeichern, dann listet Excel die Einträge als Tabelle wenn ich folgende Formatierung nehme:

Titel1;Genre1
Titel2;Genre2

Und Calc kann man sagen dass er Semikolons als Trennzeichen interpretieren soll.
 
Zuletzt bearbeitet:

Weiti

Mitglied
Soweit bin ich: leider legt das Programm keine output.csv an. Sieht jemand den Fehler?

Java:
/**
 *
 */
package listIt_package;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
 
/**
 * @author Weiti
 *
 */
public class Main {
	
	static String s = "";
	
 
    /**
     * @param args
     */
    public static void main(String[] args) {
    	
		find_EPG("E:\"Filme_fertig");  	
    }
    
    public static void write(String s){
    	File datei = new File("output.csv");
    	FileWriter schreiber = null;
		try {
			schreiber = new FileWriter(datei);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
    	try {
			schreiber.write(s);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
    	try {
			schreiber.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		


        
    }
    
    
	public static void find_EPG(String path) {
		File f = new File(path);
		File [] files = f.listFiles();
				      
				   
		for (int i=0; i< files.length; i++) {
			if (files[i].isDirectory()) {
				find_EPG(files[i].toString());		  
			} else {
				if (files[i].toString().endsWith(".txt")) {
					read(path);
					
				}
			}
		}
		write(s);
	}

	public static void read(String path){
		File f = new File(path);
		try {
			BufferedReader b = new BufferedReader(new FileReader(f));
			 try {
				s=s+b.readLine()+";"+b.readLine()+"\n";
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // Reader nutzen
       

		
	}
}
 

diggaa1984

Top Contributor
boolean createNewFile()
Atomically creates a new, empty file named by this abstract pathname if and only if a file with this name does not yet exist.
´aus der File-API .. du musst die Datei explizit erzeugen lassen. Das new allein schreibt noch nix auf die Platte ^^

und du müsstest doch dann Exceptions beim Schreiben bekommen oder, wenn die Datei nicht existiert? Wenn ja, kannst du die immer gleich mit posten, sollte die Sache für uns einfacher machen.
 

Weiti

Mitglied
Java:
/**
 *
 */
package listIt_package;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
 
/**
 * @author Weiti
 *
 */
public class Main {
	
	static String s = "";
	
 
    /**
     * @param args
     */
    public static void main(String[] args) {
    	
		find_EPG("E:\"Filme_fertig");  	
    }
    
    public static void write(String s){
    	File datei = new File("output.csv");
    	try {
			datei.createNewFile();
		} catch (IOException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
    	FileWriter schreiber = null;
		try {
			schreiber = new FileWriter(datei);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
    	try {
			schreiber.write(s);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
    	try {
			schreiber.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		


        
    }
    
    
	public static void find_EPG(String path) {
		File f = new File(path);
		File [] files = f.listFiles();
				      
				   
		for (int i=0; i< files.length; i++) {
			if (files[i].isDirectory()) {
				find_EPG(files[i].toString());		  
			} else {
				if (files[i].toString().endsWith(".txt")) {
					read(path);
					
				}
			}
		}
		write(s);
	}

	public static void read(String path){
		File f = new File(path);
		try {
			BufferedReader b = new BufferedReader(new FileReader(f));
			 try {
				s=s+b.readLine()+";"+b.readLine()+"\n";
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} // Reader nutzen
       

		
	}
}

Code:
Exception in thread "main" java.lang.NullPointerException
	at listIt_package.Main.find_EPG(Main.java:70)
	at listIt_package.Main.main(Main.java:28)

Ist datei.createNewFile() an der richtigen stelle? oder muss ich erst schreiben und dann datei.createNewFile()?

Was stimmt an der for-schleife in z.70 nicht?
 

diggaa1984

Top Contributor
listFiles

das stimmt nicht :D .. du hast kein Verzeichnis in dem Moment (edit: hm das wird ja vorher geprüft o_O .. aber dann könntes nur noch ne IOException sein, laut API, jedenfalls ist das der Übeltäter) also gibts auch keine Liste von enthaltenen Files .. und somit gilt files == null

das createNewFile ist soweit richtig. Wenn es existiert passiert nix, wenn nicht, dann wirds da neu erstellt. Unabhängig davon ob du jemals darin schreiben möchtest oder nich
 
Zuletzt bearbeitet:

Weiti

Mitglied
Ok, nun blick ich nicht mehr durch. Was stimmt denn da nicht dran? ich Liste alle Files auf, wenn ein File ein Ordner ist geh ich rekursiv in die nächste Ebene und wiederhole das Spielchen. Wenn ein File ein .txt ist wird read() ausgeführt.

Wenn ich dich richtig verstanden habe gibt ListFiles() eine exeption!? Aber warum?
 

diggaa1984

Top Contributor
ok fangen wir mal hier an:
Code:
find_EPG("E:\"Filme_fertig");
der Pfad sieht ein wenig komisch aus mit den 3 " .. das könnte er durchaus als "kein Verzeichnis" abstempeln und du bekommst null
 
Zuletzt bearbeitet:

Weiti

Mitglied
Ok, klar, hab mal gegoogelt und nun heißt es:
Java:
find_EPG("E:\\Filme_fertig");

Scheint auch zu klappen denn Asterix findet er. leider hat er keinen Zugriff.

Code:
java.io.FileNotFoundException: E:\Filme_fertig\Asterix - Operation Hinkelstein (Zugriff verweigert)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileReader.<init>(Unknown Source)
	at listIt_package.Main.read(Main.java:86)
	at listIt_package.Main.find_EPG(Main.java:75)
	at listIt_package.Main.find_EPG(Main.java:72)
	at listIt_package.Main.main(Main.java:28)
 

diggaa1984

Top Contributor
man könnte vorher noch sicherheitshalber mit
Code:
canRead()
prüfen aber warum er den Zugriff verweigert bekommst wohl nicht so einfach raus
 

Weiti

Mitglied
Java:
	public static void read(String path){
		File f = new File(path);
		if (f.canRead()==false)
			System.out.println("lesefehler");
		else{
			
			try {
				BufferedReader b = new BufferedReader(new FileReader(f));
				 try {
					s=s+b.readLine()+";"+b.readLine()+"\n";
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // Reader nutzen
	       
		}
		
	}

Der Fehler bleibt der gleiche.
 

Weiti

Mitglied
Kann jemand erkennen wo es hakt?
Oder hat jemand einen anderen Ansatz so eine Tabelle zu erstellen?
 

Weiti

Mitglied
Ändert aber nichts daran, das ich Fehler beim einlesen der .txt bekomme, oder?
Schließlich funktioniert das lesen ja nicht, was im Grunde noch nichts mit Tabellen zu tun hat.
 

Weiti

Mitglied
Java:
            if (files[i].isDirectory()) {
                find_EPG(files[i].toString());        
            } else {
                if (files[i].toString().endsWith(".txt")) {
                    read(path);

Hier passiert doch aber folgendes: wenn das file ein Ordner ist, wird eine Ordner-Ebene weiter gegangen, wenn das file kein Ordner ist und mit .txt endet wird read() ausgeführt.
Also kann es gar nicht sein!?#

Edit:
Zum testen zwei print eingefügt:

Java:
	public static void find_EPG(String path) {
		File f = new File(path);
		File [] files = f.listFiles();
				      
				   
		for (int i=0; i< files.length; i++) {
			if (files[i].isDirectory()) {
				find_EPG(files[i].toString());	
				System.out.println(files[i].toString()+"Ist ein Ordner");
			} else {
				if (files[i].toString().endsWith(".txt")) {
					System.out.println(files[i].toString()+"Ist EPG, lese aus");
					read(path);
					
				}
			}
		}
		write(s);
	}


Fehler:


Code:
E:\Filme_fertig\Asterix - Operation Hinkelstein\EPG.txtIst EPG, lese aus
java.io.FileNotFoundException: E:\Filme_fertig\Asterix - Operation Hinkelstein (Zugriff verweigert)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileReader.<init>(Unknown Source)
	at listIt_package.Main.read(Main.java:92)
	at listIt_package.Main.find_EPG(Main.java:77)
	at listIt_package.Main.find_EPG(Main.java:72)
	at listIt_package.Main.main(Main.java:28)
E:\Filme_fertig\Asterix - Operation HinkelsteinIst ein Ordner
E:\Filme_fertig\Asterix bei den Briten\EPG.txtIst EPG, lese aus
java.io.FileNotFoundException: E:\Filme_fertig\Asterix bei den Briten (Zugriff verweigert)
 
Zuletzt bearbeitet:

Weiti

Mitglied
Danke! Das ist wieder ein typischer Wald-vor-lauter-Bäumen-Fehler.

Java:
read(files[i].toString());


Danke an alle, Nun läuft es Fehlerfrei, auch als jar, und erstellt eine hübsche Tabelle.
 
Zuletzt bearbeitet:

Weiti

Mitglied
Ich habe noch das Problem das der Pfad absolut ist. leider geht folgendes nicht:

Java:
    public static void main(String[] args) {
    	
    	String s2 = System.getProperty("user.dir");
    	System.out.println("-----------------"+s2);
		find_EPG("s2");

ich habe eine jar erstellt und in den Ordner Filme_fertig gelegt. Mit dem absoluten pfad geht es. Auch geht es mit

Java:
find_EPG("\\Filme_fertig");

Aber wenn ich den Ordner umbenenne in Filme geht das natürlich nicht mehr.

Eine Fehlerausgabe habe ich nicht denn wenn ich es mir eclipse ausführe ist s2=C:\Dokumente und Einstellungen\Systemroot\workspace\ListIt. Dort sind keine Lesbaren Dateien
und die jar gibt nichts aus.
 
J

JohannisderKaeufer

Gast
args[0] hast du aber schon mal gehört?

Das lässt sich auch in Eclipse einstellen.

Ansonsten kann man immer noch benutzereingaben einlesen.
 

Weiti

Mitglied
args[0] kenne ich, ja. Soll ich dann die jar über Kommandozeile mit dem Ordnernamen als Parameter aufrufen? Wäre eine Lösung aber eher eine unschöne.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
J Java Programm - ausführbare Jar Datei erstellen Allgemeine Java-Themen 2
S Aus Programm Klasse erstellen und verwenden Allgemeine Java-Themen 10
H Labels erstellen während Programm läuft Allgemeine Java-Themen 3
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben