funktionen

julia123

Erfahrenes Mitglied
so sieht jetzt mein code aus
Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import javax.swing.JFileChooser;

public class Main {

	// Textdateien einlesen und diese anzeigen

	public static void main(String[] args) throws IOException {
		
		//readTXT(chooser());
		ausgabe();
	}

	public static String chooser() {
		// JFileChooser-Objekt erstellen
		JFileChooser chooser = new JFileChooser();
		// Dialog zum Oeffnen von Dateien anzeigen
		int rueckgabeWert = chooser.showOpenDialog(null);

		/* Abfrage, ob auf "Öffnen" geklickt wurde */
		if (rueckgabeWert == JFileChooser.APPROVE_OPTION) {
			// Ausgabe der ausgewaehlten Datei
			System.out.println("Die zu öffnende Datei ist: "
					+ chooser.getSelectedFile().getName());
			
			return chooser.getSelectedFile().getName();
		}
		return null;

	}

	public static String readTXT(String txtDatei) {

		String choosenTXT = chooser(); 
		
		Path path = Paths.get(choosenTXT);

		String content = null;
		try {
			content = new String(Files.readAllBytes(path),
					Charset.defaultCharset());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("content");
		return content;

	}
	
	public static void ausgabe() {
		System.out.println(readTXT(chooser()));
	
	}

der amcht aber immer noch nicht das was ich möchte ****?
 

saftmeister

Nutze den Saft!
Du solltest dir angewöhnen, etwas bessere Beschreibungen des Fehlers mitzuteilen. "Der Code macht nicht, was ich möchte" ist keine hilfreiche Beschreibung deines Problems. Um dir helfen zu können braucht man schon eine Beschreibung des erwarteten Ergebnisses so wie des aktuellen.

Ein Blick in meine Glaskugel hat keine Lösungen gezeigt, die irgendwie mit deinem Problem zu tun haben.
 

julia123

Erfahrenes Mitglied
also ich hab jetzt das hier eingefüght um es ausgeben zu können :
Code:
    public static void ausgabe() {
        System.out.println(readTXT(chooser())); 
    }

diese Fehlermeldung wird raus geworfen:
Die zu öffnende Datei ist: Notzen.txt
java.nio.file.NoSuchFileException: Notzen.txt
content
null
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(Unknown Source)
at sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.readAttributes(Unknown Source)
at java.nio.file.Files.readAttributes(Unknown Source)
at java.nio.file.Files.size(Unknown Source)
at java.nio.file.Files.readAllBytes(Unknown Source)
at hausaufgabe10.Main.readTXT(Main.java:49)
at hausaufgabe10.Main.ausgabe(Main.java:62)
at hausaufgabe10.Main.main(Main.java:20)

ansonsten was ich noch nicht verstehe ist wieso zwei mal das Fenster zum aufrufen einer datei aufgerufen wird
 

saftmeister

Nutze den Saft!
In Zeile 33 aus Post #11 hast du stehen

Java:
return chooser.getSelectedFile().getName();

Statt dessen sollte da stehen

Java:
return chooser.getSelectedFile().getAbsolutePath();

Zum Problem mit dem doppelten Fenster:

In Zeile 41 des Codes aus Post #11 steht ein zweiter Aufruf von chooser(). Die Zeile würde ich komplett entfernen und statt dessen in der darauffolgenden Zeile 43 die Variable verwenden, die als Argument an chooser() übergeben wird. Also so:

Java:
Path path = Paths.get(txtDatei);
 

julia123

Erfahrenes Mitglied
vielen dank alles funktionier.
ich hätte da nur noch eine andere frage nur zum verständnis.
also also ich hab jetzt (noch nicht fertig) mehrer optionen z.b. txt einlesen wie hier jetzt usw
und mir wurden mehrere klassen vorgegeben : main, UI, FileHandling.
was ich nicht verstehe und das hat ich auch so noch nicht gehabt warum eine main und eine UI das
geheimnisprinzip sagt mir was ( der benutzer soll nur das bekommen an quellcode was nötig ist...)

ich kenn das ja so das wenn ich die UI starte läuft das program. so auch bei der main im prinzip.

kannst du mir da weiter helfen? eine Struktur hilfe.
 

sheel

I love Asm
Der Benutzer soll am Besten überhaupt keine Quellcode bekommen.
Warum man zB. die (G)UI vom "Arbeitsteil" des Programms trennt:
Einer der Hauptgründe ist, dass man auf die Weise die Oberfläche leicht ändern
bzw. durch etwas komplett anderes ersetzen kann (Konsole, Netzwerkinterface...),
ohne den Arbeitsteil ändern zu müssen. Macht das Ändern schneller,
einfacher, weniger fehleranfällig...

Links zur Netiquette findet man immer am unteren Seitenrand, oder auch in meiner Signatur.
 

julia123

Erfahrenes Mitglied
ok, danke erst mal bis dahin.

Ich hoffe ich habs verstanden. ok mein danke:

UI: ist nur die Oberfläche darin werde ich nur so sachen wie Fenster und so speichern.

FileHandling: da kommen meine Methoden rein für dei aktion zb lesen ...

Main: in der Main wird dann alles zusammen geschmissen und ausgeführt.