Veröffentlicht 18. Juli 201114 j 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 18. Juli 201114 j von Blackmonkey01
18. Juli 201114 j C:\Dokumente und Einstellungen\v209006/Desktop/B-SB0E_18.07.2011_03:36:54.xml du used Slash und Backslash... Windows nutzt Backslash C:\Dokumente und Einstellungen\v209006\Desktop\B-SB0E_18.07.2011_03:36:54.xml so sollte es passen
18. Juli 201114 j Hmpf danke hätt ich eigentlich wissen sollen ^^ @ Linuxdoku Also das mit Slash und Backslash macht Java schon geht auch so irgendwie.
18. Juli 201114 j du used Slash und Backslash... Windows nutzt Backslash Das ist so nicht richtig. Die Lage ist komplexer, lässt sich für die meisten Zwecke aber auf die Aussage, dass beides geht eingrenzen.
20. Juli 201114 j 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.
20. Juli 201114 j 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
20. Juli 201114 j 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 20. Juli 201114 j von Sporticus
20. Juli 201114 j 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
21. Juli 201114 j 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!
21. Juli 201114 j 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
22. Juli 201114 j 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)).
22. Juli 201114 j 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!
22. Juli 201114 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.