Methoden FileWriter Methoden funktionieren nicht

Java-Insel

Aktives Mitglied
Mahlzeit.

Ich habe ein Programm, das auf ein Verzeichnis bzw. eine Datei zugreifen soll, indem es diese einmal abfragt und dann in einer Textdatei abspeichert. Wenn die Textdatei schon vorhanden ist, soll nicht nachgefragt werden. Ich habe dazu folgenden Code genommen:
[Java]import java.io.*;
import java.util.*;
...

Console cons = System.console();
Scanner sc = new Scanner(System.console().reader());
try {
FileWriter datei = new FileWriter("pfad.txt");
if(test.isFile() == false) {
try {
cons.printf(" Bitte geben Sie den Pfad zum Verzeichnis an! Frei- oder Leerzeichen sind untersagt!");
String pfad = sc.next();
FileWriter test = new FileWriter(pfad);
if(test.isDirectory() == true) {
datei.write(pfad);
}
test.close();
}
catch(Exception e) {
System.err.println(e);
}
}
datei.close();
}
catch(Exception e) {
System.err.println(e);
}[/Java]
Die Fehlermeldung ist Folgende:
Code:
Rechner.java:77: cannot find symbol
symbol: method isFile()
location: class java.io.FileWriter
    if(test.isFile() == false) {
            ^
Und das Gleiche noch mit exists(). Kann mir jemand helfen?
 
Zuletzt bearbeitet:

Java-Insel

Aktives Mitglied
Also muss ich zum Testen der Existenz des Pfades ein Objekt der File-Klasse erzeugen, also ungefähr so:
Java:
File test = new File("pfad.txt");
...
if(test.exists() == false) {
...
File test2 = new File(pfad);
...
}

Wenn diese Klasse nur testet und nichts schreibt oder so, dann gibt es/brauche ich keine close()-Methode, oder?
 

Fant

Bekanntes Mitglied
Ja, das kannst du so machen.

Schau doch mal selbst in dem von mir geposteten Link, ob du da eine close-Methode findest.
 

Java-Insel

Aktives Mitglied
Danke, das hat mir weiter geholfen. Der optimierte Programmcode sieht nun so aus:
Java:
	public static void main(String[] args) {
		Console cons = System.console();
		Scanner sc = new Scanner(System.console().reader());
		try {
			File test = new File("pfad.txt");
			
			if(test.isFile() == false) {
				try {
					cons.printf(" Bitte geben Sie den Pfad zum Verzeichnis an! Frei- oder Leerzeichen sind weder erwünscht noch erlaubt!%n");
					String pfad = sc.next();
					File test2 = new File(pfad);
					if(test2.isDirectory() == true) {
						FileWriter schreiben = new FileWriter("pfad.txt");
						schreiben.write(pfad);
						schreiben.close();
					}
					else {
						System.err.println("Das Verzeichnis konnte leider nicht gefunden werden.");
					}
				}
				catch(Exception e) {
					System.err.println(e);
				}
			}
		}
		catch(Exception e) {
			System.err.println(e);
		}
	}
Ohne den Tipp wär ich wahrscheinlich nicht auf die Lösung gekommen. DANKE!:applaus:
 

Clayn

Aktives Mitglied
Java:
FileWriter schreiben = new FileWriter("pfad.txt");

ist sogar unnötig da du ja einfach dein erzeugtes File Objekt übergeben kannst also:

Java:
FileWriter schreiben = new FileWriter(test);

sollte eigentlich gehen.
 

Fant

Bekanntes Mitglied
Unnötig nicht. Beide Varianten machen ja im Endeffekt das Gleiche. Ich würde hier aber auch die zweite Variante vorziehen, da weniger Fehleranfällig und leichter zu warten. Möchte man die Datei, in die geschrieben werden soll ändern, dann muss man nur noch ein einer Stelle den String entsprechend anpassen.
 

Clayn

Aktives Mitglied
Klar machen beide das selbe aber irgendwann denkt man halt immer auf leichte änderbarkeit hin^^
Ist ja immerhin auch ne mögliche fehlerquelle etc. aber hast schon recht, beides geht
 

Java-Insel

Aktives Mitglied
Erneuter Fehlerbefall: ich habe (oder besser gesagt wollte) die Methode jetzt noch so erweitern, dass man beim Aufruf Argumente hinzufügen kann (per args). Es soll im Moment zwei mögliche Argumente geben, aber nur das erste Token soll beachtet werden. Es gibt einmal --h für Hilfe und -p um die Pfad.txt wieder zurückzusetzen. Code:
Java:
import java.io.*;
import java.util.*;
...
Console cons = new System.console();
if(args.length>=1) {
switch(args[0]) {
case "--h": cons.printf(" java NameDerDatei [--h, -p]\n\n
--h: help;\n
-p: preferences;\n");
break;
case "-p": try {
File loeschen = new File("pfad.txt");
if(loeschen.delete() == true) cons.printf(" Einstellungen erfolgreich zurückgesetzt!\n\n");
}
catch(Exception e) {
System.err.println(e);
}
break;
}
}
...
Fehler wurden gefunden bei class console() (cannot find symbol) und switch(args[0]) (incompatible types). Ich kann mir bei beiden keinen Reim darauf machen; Console cons hat schon immer funktioniert und die 0 ist doch int und kein String oder so...
 

Fant

Bekanntes Mitglied
An der Zeile
Code:
Console cons = new System.console();
ist nichts falsch. Hast du sonst irgendwas geändert? Vielleicht ein neue Projekt angelegt und andere Kompilereinstellungen gewählt? Oder arbeitest du an einem anderen Rechner mit einer anderen java-Version?

Strings kannst du in Switches erst ab Java 1.7 für Vergleiche heranziehen. Nach deiner Fehlermeldung geh ich einfach mal davon aus, dass du eine niedrigere Versionsnummer benutzt. Du kannst das gleiche Verhalten aber z.B. mit ein paar geschachtelten if-Abfragen erreichen:

Java:
void macheEtwas(String str) {
   if(str.equals("abc"){
      // mache dieses ...
   } else {
   if(str.equals("xyz") {
      // mache jenes ...
   } else
   ...
}

Edit:
Es ist hilfreich, wenn du wirklich die ganze Fehlermeldung samt Stacktrace hierher kopierst. Das erleichtert oft die Fehlersuche.
 
Zuletzt bearbeitet:

Java-Insel

Aktives Mitglied
Ich nehme mal an, dass das JDK 7 das richtige ist. Aber warum steht da 7u4? ist das sozusagen eine Zwischenversion? wahrscheinlich.

Das mit dem new stimmt auch. Wahrscheinlich war ich einfach so gewöhnt an dieses kleine Wort, das ich es hingeschrieben habe, einfach so. Jetzt im nachhinein ist es doch schon lustig, das so kleine Sachen so riesiege Fehler hervorbringen können...

Danke nochmal vielmals!
 
Zuletzt bearbeitet:

Fant

Bekanntes Mitglied
Ich nehme mal an, dass das JDK 7 das richtige ist. Aber warum steht da 7u4? ist das sozusagen eine Zwischenversion?

Ja, du brauchst das JDK 7.
Oder du löst das mit den Strings eben doch anders. Nur dafür würde ich mir keine neue Java-Version installieren ;)

Das u steht hier für Update, glaube ich. Da könnte also auch so etwas wie Java 7.0.4 stehen.
 

flopalko

Bekanntes Mitglied
Ja, du brauchst das JDK 7.
Oder du löst das mit den Strings eben doch anders. Nur dafür würde ich mir keine neue Java-Version installieren ;)

Das u steht hier für Update, glaube ich. Da könnte also auch so etwas wie Java 7.0.4 stehen.

Das switch(String) ist schon seeeehr angenehm^^ Ist ja auch kein großer Aufwand eine neue Java-Version zu installieren also warum würdes du das NUR dafür nicht machen?^^
 

Java-Insel

Aktives Mitglied
Mein Problem: es gibt nur EINE Version für Mac, und die ist für Lion. ich hab aber nur Snow Leopard. Dann muss ich entweder ein neues Betriebssystem installieren oder es einfach anders lösen. Und jetzt ratet mal: was mache ich?












Lösung: ich löse das Problem einfach anders, auch wenn switch ne schöne Sache ist. Wer weiß, vielleicht installiere ich mir dann und wann auch das neue Betriebssystem. Aber nur, wenn es dafür mehrere Gründe gibt.
 

Fant

Bekanntes Mitglied
Das switch(String) ist schon seeeehr angenehm^^ Ist ja auch kein großer Aufwand eine neue Java-Version zu installieren also warum würdes du das NUR dafür nicht machen?^^

Naja, manchmal ist das eben schon mit größerem Aufwand verbunden. Siehe zum Beispiel den letzten Post von Java-Insel ;)
Und wenn man noch ne Entwicklungsumgebung und/oder nen Java-Server benutzt, dann muss man das eventuell auch neu konfigurieren, und und und...

Lösung: ich löse das Problem einfach anders, auch wenn switch ne schöne Sache ist.

Ja, zum Beispiel so, wie in Beitrag #10 von mir vorgeschlagen.
 

Java-Insel

Aktives Mitglied
Ja, zum Beispiel so, wie in Beitrag #10 von mir vorgeschlagen.
genau so. Aber das Programm ist immer noch buggy:
Java:
	public static void main(String[] args) {
		Console cons = System.console();
                //testen, ob ein Argument vorhanden ist
		if(args.length>=1) {
			String[] kommandos = new String[2];
			kommandos[0] = "--h";
			kommandos[1] = "-p";
			if(args[0]==kommandos[0]) {
				 cons.printf(" java Rechner [--h, -p]%n%n --h: help%n -p: preferences;%n%n");
			}
			else if(args[0]==kommandos[1]) {
 				try {
					File loeschen = new File("pfad.txt");
					loeschen.delete();
					if(loeschen.delete() == true) cons.printf(" Einstellungen erfolgreich zurückgesetzt!%n%n");
					else cons.printf(" Die Datei konnte leider nicht gelöscht werden!%n");
				}
				catch(Exception e) {
					System.err.println(e);
				}
			}
		}
		Scanner sc = new Scanner(System.console().reader());
		try {
			File test = new File("pfad.txt");
			
			if(test.isFile() == false) {
				try {
					cons.printf(" Bitte geben Sie den Pfad zum Verzeichnis an! Frei- oder Leerzeichen sind weder erwünscht noch erlaubt!%n");
					String pfad = sc.next();
					File test2 = new File(pfad);
					if(test2.isDirectory() == true) {
						FileWriter schreiben = new FileWriter(test);
						schreiben.write(pfad);
						schreiben.close();
					}
					else {
						System.err.println("Das Verzeichnis konnte leider nicht gefunden werden.");
					}
				}
				catch(Exception e) {
					System.err.println(e);
				}
			}
		}
		catch(Exception e) {
			System.err.println(e);
		}
	}
Das Problem liegt anscheinend in der Logik, da der Compiler keinen Muks von sich gibt. Ich hab' die Kommandos übrigens in einen Array gepackt, damit ich dann noch darauf zugreifen kann(wer weiß, wozu es gut ist...)
 

Java-Insel

Aktives Mitglied
Klappt alles wunderbar. Ich habe übrigens die sc.next() Methode durch sc.nextLine() ersetzt, damit auch Ordner mit Leerzeichen im Namen gefunden werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
A Datei Ein und Ausgabe FileWriter und printWriter Java Basics - Anfänger-Themen 5
O Ausgabe als .txt Datei speichern mit FileWriter Java Basics - Anfänger-Themen 2
B FileWriter nicht sichtbar? Java Basics - Anfänger-Themen 4
D Methoden Filewriter macht keine Zeilenumbrüche Java Basics - Anfänger-Themen 3
D FileWriter schreibt nicht in Datei Java Basics - Anfänger-Themen 14
Z FileWriter erzeugt Symbole Java Basics - Anfänger-Themen 8
C FileWriter bzw. Reader fehlerhaft Java Basics - Anfänger-Themen 6
C FileWriter Problem. Java Basics - Anfänger-Themen 2
M FileWriter Neue Datei wenn aktuelle "zu groß" Java Basics - Anfänger-Themen 3
D Nur aus Interesse: Warum verwendet man FileWriter.flush()? Java Basics - Anfänger-Themen 4
B FileWriter und JFileChooser zusammenfügen Java Basics - Anfänger-Themen 3
B FileWriter close() muss? Java Basics - Anfänger-Themen 8
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
G Effizienzsteigerung von FileWriter als Logging Java Basics - Anfänger-Themen 4
L FileReader und Filewriter Java Basics - Anfänger-Themen 4
O Datentypen double in string über fileWriter... Java Basics - Anfänger-Themen 7
O OOP fileWriter Dateiname übergeben Java Basics - Anfänger-Themen 12
R Klassen FileWriter und CharSet Java Basics - Anfänger-Themen 4
Luk10 FileWriter Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
O Integer in File mit Filewriter schreiben - geht nicht richtig Java Basics - Anfänger-Themen 4
M Probleme mit FileWriter Java Basics - Anfänger-Themen 7
M FileWriter innerhalb runnable Jar Java Basics - Anfänger-Themen 8
Burny91 FileReader / FileWriter / BufferedWriter An einer bestimmten Zeile String ersetzten Java Basics - Anfänger-Themen 2
C FileWriter mit einer Variable Java Basics - Anfänger-Themen 8
S FileWriter - in neue Zeile schreiben!? Java Basics - Anfänger-Themen 19
K FileWriter Speicherort Java Basics - Anfänger-Themen 7
T OOP Speichern mit BufferedWriter(FileWriter(File)) Java Basics - Anfänger-Themen 2
S FileWriter Java Basics - Anfänger-Themen 3
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G FileWriter -> neue Zeile Java Basics - Anfänger-Themen 13
F Seltsame Zeichen und kein Zeichenumbruch mit Filewriter Java Basics - Anfänger-Themen 4
G FileWriter Java Basics - Anfänger-Themen 3
G FileWriter Java Basics - Anfänger-Themen 6
T FileWriter Java Basics - Anfänger-Themen 5
M FileWriter Java Basics - Anfänger-Themen 18
J Problem mit FileWriter Java Basics - Anfänger-Themen 24
N Schneller als FileWriter? Java Basics - Anfänger-Themen 28
B Problem mit Filereader und filewriter Java Basics - Anfänger-Themen 20
M FileWriter-Problem Java Basics - Anfänger-Themen 2
P FileWriter schreiben? Java Basics - Anfänger-Themen 4
L Streamklassen, Filewriter und StringBuffer Java Basics - Anfänger-Themen 2
D FileWriter write? Zeilenumbruch ? Java Basics - Anfänger-Themen 4
G Prüfen mit FileWriter Java Basics - Anfänger-Themen 6
N Problem mit FileWriter Java Basics - Anfänger-Themen 2
S FileWriter-Variable nicht initialisiert Java Basics - Anfänger-Themen 3
R FileWriter: Dort wieder anfangen, wo er aufgehört hat Java Basics - Anfänger-Themen 4
S FileWriter funzt nicht :( Java Basics - Anfänger-Themen 5
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Kotelettklopfer Methoden nicht aufrufbar Java Basics - Anfänger-Themen 34
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3
H Kann man Methoden öfter aufrufen? Java Basics - Anfänger-Themen 2
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
M Aufruf von statischen Methoden einer anderen Klasse Java Basics - Anfänger-Themen 15
lougoldi Verkettung von Methoden und Konstruktoren Java Basics - Anfänger-Themen 4
Zeppi OOP Methoden mit einander Verknüpfen Java Basics - Anfänger-Themen 6
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
Junger_Basileus Celsius -> Fahrenheit / Strukturierung in statischen Methoden Java Basics - Anfänger-Themen 7
J Verschachtelte Methoden Java Basics - Anfänger-Themen 9
H Methoden in anderen Methoden aufrufen Java Basics - Anfänger-Themen 6
Kawastori Hilfe bei Methoden Übung Java Basics - Anfänger-Themen 6
veryck Methoden Rekursive Methoden mit Rückgabeparameter Java Basics - Anfänger-Themen 9
C Methoden können nicht auf Instanzvariable der Klasse zugreifen Java Basics - Anfänger-Themen 3
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben