Zum Inhalt springen

Datei lässt sich nicht speichern ?? Hilfe bitte.


Blackmonkey01

Empfohlene Beiträge

Hallo,

Ich will mein Programm unter der Abteilung, Systemdatum und -zeit abspeichern. Aber er bringt mir immer einen Fehler. Weis wer warum ?


SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy_hh:mm:ss");

            Timestamp time = new Timestamp(System.currentTimeMillis());

            String zeit = sdf.format(time);

            String filename = "/" + division + "_" + zeit + ".xml";

            System.out.println(filename);

            System.out.println(JGui.st_save_directory + filename);

            StreamResult result = new StreamResult(new File( JGui.st_save_directory + filename ));


            Transformer transformer = TransformerFactory.newInstance()

                    .newTransformer();


            transformer.transform(source, result);

Die Ausgabe des Compilers:

/B-SB0E_18.07.2011_03:36:54.xml

C:\Dokumente und Einstellungen\v209006/Desktop/B-SB0E_18.07.2011_03:36:54.xml

[COLOR="red"]javax.xml.transform.TransformerException: java.io.FileNotFoundException: C:\Dokumente und Einstellungen\v209006\Desktop\B-SB0E_18.07.2011_03:36:54.xml (Falscher Parameter)[/COLOR]

Falls das hilft so war es vorher:

            StreamResult result = new StreamResult(new File( JGui.st_save_directory + "/data.xml" ));

Da ist doch nichts anders nur das ich direkt reinschreibe...

Danke schonmal.

Bearbeitet von Blackmonkey01
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,


[COLOR="red"]javax.xml.transform.TransformerException: java.io.FileNotFoundException: C:\Dokumente und Einstellungen\v209006\Desktop\B-SB0E_18.07.2011_03:36:54.xml (Falscher Parameter)[/COLOR]

das mit dem ist so nicht ganz korrekt ist total richtig...

selbst der compiler bei der fehlerausgabe mach aus dem slash ein backslash weil windows backslashes hat der compiler ist nur so intelligent um zu merken das es ein backslash sein muss...

genau aus diesem grund ist java nicht plattformunabhängig weil die jvm für jedes os bereitgestellt werden muss damit java überhaupt funkt... die jvm ist nicht plattformunabhängig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

das mit dem ist so nicht ganz korrekt ist total richtig...

selbst der compiler bei der fehlerausgabe mach aus dem slash ein backslash weil windows backslashes hat der compiler ist nur so intelligent um zu merken das es ein backslash sein muss...

genau aus diesem grund ist java nicht plattformunabhängig weil die jvm für jedes os bereitgestellt werden muss damit java überhaupt funkt... die jvm ist nicht plattformunabhängig.

Was? Ich habs drei mal gelesen aber nicht verstanden. :confused:

Zum Thema \ oder /. Daür gibts in der File Klasse die separator Konstanten die man dafür verwendet.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ob / oder \ ist unter Windows egal.

Ich zitiere von Windows:

Ein Dateiname darf keines der folgenden Zeichen enthalten:

\ / : * ? " < > |

Vielleicht änderst du das einfach mal in deinem Code, vielleicht klappts ja dann.

Das...

B-SB0E_18.07.2011_03:36:54.xml

... ist demnach kein gültiger Dateiname unter Windows

Grüße

Sporticus

Bearbeitet von Sporticus
Link zu diesem Kommentar
Auf anderen Seiten teilen

Windows kommt sowohl mit einem Backslash, als auch mit einem Slash klar (unabhängig von der JVM, jdeoch schließe ich Sonderfälle nicht aus, wozu Netzwerkadressen o.ä. gehören könnte)

auch wenn es egal ist, sollte man dennoch das systemspeziefische Zeichen verwenden, da dies eleganter ist

man kann an das systemspezifische Zeichen über

File.separator
oder
System.getProperty("file.separator")

gelangen (letzteres ist wie man sehen kann ein Methodenaufruf und kann unter besonderen Bedingungen langsamer als das 1. Beispiel sein, zumal der Parameter ausgewertet werden muss)

wie auch schon geschrieben wurde liegt nicht daran der Fehler, sondern am Doppelpunkt

hierfür sollte ein anderes Zeichen (Punkt, Bindestrich, unterstrich, Leerzeichen) oder kein Zeichen verwendet werden

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie auch schon geschrieben wurde liegt nicht daran der Fehler, sondern am Doppelpunkt

hierfür sollte ein anderes Zeichen (Punkt, Bindestrich, unterstrich, Leerzeichen) oder kein Zeichen verwendet werden

das der fehler nicht daran liegt wurde schnell klar, jedoch akzeptiert windows selbst nur \

wie man in der fehlerausgabe sieht ändert windows / automatisch in \ um... dies liegt aber nicht daran das es egal ist ob / oder \ sondern nur um fehler zu vermeiden. selbst in der console wird ein / durch \ ersetzt um so fehler zu vermeiden!

Link zu diesem Kommentar
Auf anderen Seiten teilen

in welchem Fall würde es denn zu einem Fehler führen?

mir ist nur bekannt, dass man bei Netzwerkpfaden ein \\ am Anfang setzen muss (und kein //, da dies entweder nicht als Anfang eines Netzwerkpfades oder als Anfang einer Internetadresse unter wegfall von http: erkannt wird)

dass ein / durch ein \ ersetzt wird, heißt doch, dass auch / akzeptiert werden, oder nicht?

um auf deine Aussage einzugehen:

selbst der compiler bei der fehlerausgabe mach aus dem slash ein backslash weil windows backslashes hat der compiler ist nur so intelligent um zu merken das es ein backslash sein muss...

nein

über der Fehlerausgabe ist die Ausgabe der Zeichenkette zu sehen, über welche auf die Datei zugegriffen wird und man kann erkennen, dass dort keine ersetzung stattgefunden hat

das Programm wurde aber nach dem Kompilieren ausgeführt (als der Compiler schon lange fertig war)

der Compiler kann es auch aus dem Grund nicht sein, da der Code für die JVM kompiliert wird

nicht für Windows

nicht für Unix

etc ...

genau aus diesem grund ist java nicht plattformunabhängig weil die jvm für jedes os bereitgestellt werden muss damit java überhaupt funkt... die jvm ist nicht plattformunabhängig.

Java ist plattformunabhängig

man kann den gleichen Quelltext auf verschiedenen Betriebssystemen laufen lassen

zudem ist ein Java Programm unabhängig von der zugrunde liegenden Prozessorarchitektur

das Programm ist lediglich von der JVM abhängig (sie muss je nach Einstellungen bei der Kompilierung auf einer bestimmten oder neueren JVM-Version laufen)

und die JVM wiederum ist abhängig (das hattest du wieder geschrieben) von Betriebssystem und Prozessorarchitektur

sollte die Unabhängigkeit einer Sprache gegenüber dem System vom Dateitrennzeichen abhängig sein, dann sind so gut wie alle Sprachen, mit denen man auf Dateien zugreifen kann einfach nciht plattformunabhängig -> auch interpretierte Sprachen

Link zu diesem Kommentar
Auf anderen Seiten teilen

das der fehler nicht daran liegt wurde schnell klar, jedoch akzeptiert windows selbst nur \

Das ist einfach mal falsch.

Es ist zwar auf jeden Fall sauberer bei Windowspfaden den Bachslash zu benutzen, aber Windows selber kommt auch mit dem Slash innerhalb von Pfaden klar.

And that's how the "\" character was chosen.

[...] The DOS developers weren't particularly happy about this state of affairs - heck, they all used Xenix machines for email and stuff, so they were familiar with the *nix command semantics. So they coded the OS to accept either "/" or "\" character as the path character (this continues today, btw - try typing "notepad c:/boot.ini" on an XP machine (if you're an admin)).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnt ihr mal bitte wieder "Back to Toppic" kommen!!!

Wir haben das mit dem / und \ denke ich mitlerweile alle verstanden und damit geklärt.

Das eigentliche Problem sind immer noch die Doppelpunkte im Dateinamen!

das man sowas nicht macht lernt jeder klickwilde user der einmal ne datei/ordner erstellen wollte... sein problem ist ja schon gelöst

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...