Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

Try the new Google Books

Check out the new look and enjoy easier access to your favorite features

Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

  • Startseite
  • Fachliche Foren
  • Programmierung
  • Java
  • Dateizugriff über Netzwerk
  • Startseite
  • Fachliche Foren
  • Programmierung
  • Java
  • Dateizugriff über Netzwerk

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.


Page 2

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Habe folgendes Problem. Ich will eine datei schreiben, mit einer Mehtode, die sich write() nennt. Wenn ich den Pfad übergebe, dann gibt es in dem Pfad nur einfache Backslashes, das mag Windows nicht. Wenn ich dann mit einer replace-Methode die \ mit \\ ersetzen will, akzeptiert er den Pfadnamen dennoch nicht. Ich hoffe mal, dass diese Frage an dieser Stelle nicht fehl am Platze ist.

public void write(String path){ //Create the logfile if not exists. try { System.out.println(path); path = path.replace("\\","\\\\"); System.out.println(path); file = new File(path); // if file doesnt exists, then create it if (!file.exists()) { file.createNewFile(); }

Ich habe keine ahnung, warum das der Fall ist

Ich kann das Resultat des Codesnippets hier oben angeben: C:\Users\MEINNAME1\Desktop\regeln\log.txt C:\\Users\\MEINNAME1\\Desktop\\regeln\\log.txt

java.io.IOException: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(Unknown Source) at inout.mWriter.write(mWriter.java:25) at inout.mReader.read(mReader.java:49)

at core.Main.main(Main.java:16)

Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

path = path.replace("\\","\\\\");

Das ist doppelt gemoppelt. \\ ist nur die Escape-Sequenz für einen Backslash in String-Literalen von Java. Also Strings, die direkt im Code definiert werden und beim Auführen des Codes einen Backslash "\" enthalten müssen. Manche Sprachen bieten hierfür ganz andere Syntax - z.B Raw-Strings, so dass man "foo = r'hello\world\' schreiben kann.

Windows selbst mag/braucht doppelte Slashes in den Pfaden nicht wirklich (und kann im übrigen seit Urzeiten mit "/" umgehen)


http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

Zum Problem: wo kommt der String her? Ggf. ist da irgndwo ein non-printable Zeichen (z.B ein line-break am Ende) welches zuerst entfernt werden muss - also mal mit String.trim probieren.

Zuletzt bearbeitet: Mai 9, 2014

Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

Hm...ich hatte das neulich erst, Windows kann auch mit einfachen \ umgehen. Zumindest hat das bei mir funktioniert, sowohl Dateien erstellen als auch beschreiben. Da mußte nichts ersetzt werden. Ich kenne die Exception aber gut. Ich habe vor kurzem ein ganzes Wochenende damit verbracht, den Fehler zu finden. Der Grund war, wie CDW es schon andeutete, ein unprintable Zeichen im Pfad-String. In meinem Fall war es ein Leerzeichen, das in der Eingabezeile standardmäßig am Beginn drinstand. Ich bin fast wahnsinnig geworden...

Existiert denn der Ordner, in dem du die Datei reinschreiben willst? Das übergeordnetes Verzeichnis muß existieren.

Hallo Leute, ich verstehe diese Exception einfach nicht.. Wäre lieb wenn Ihr mir weiterhelfen könntet. Vielen Dank Ghorki

Java:

PdfWriter.getInstance(document, new FileOutputStream(getPfad() + "\\" + getRfid() + " " + getCurrTime() + ".pdf"));


Java:

java.io.FileNotFoundException: C:\Users\ghorki\620183122209 12.12.2012.pdf (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at gui.GurtBearbeiten.createPdf(GurtBearbeiten.java:385) at gui.GurtBearbeiten$2.actionPerformed(GurtBearbeiten.java:297) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

Mach mal ein [c]new File(path).exists()[/c] um zu testen, ob die Datei existiert. Das File kannst du dann gleich statt dem String dem FOS übergeben.

Ich benutzte das Objekt Document

Java:

Document document = new Document(); document.open(); PdfWriter.getInstance(document, new FileOutputStream(getPfad() + "\\" + getRfid() + " " + getCurrTime() + ".pdf"));

Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

Was willst du mir sagen? Du kannst trotzdem eigenhändig ein File-Objekt erzeugen, [c]exists()[/c] ausgeben und dann dieses dem FOS übergeben.

Verbesser mich bitte wenn ich einen Fehler gemacht habe. So bekomme ich jedenfalls die gleiche Fehlermeldung

Java:

File file = new File(getPfad() + "\\" + getRfid() + " " + getCurrTime() + ".pdf"); PdfWriter.getInstance(document, new FileOutputStream(file)); System.out.println(file.exists());

Was mir gerade aber noch aufgefallen ist, wenn ich anstatt getRfid() einen String direkt eintrage "987", dann passiert folgendes: Ich bekomm eine andere Exception, das PDF wird aber trotzdem erstellt, jedoch tritt beim öffnen dieser ein Fehler auf.

Java:

com.itextpdf.text.DocumentException: java.lang.NullPointerException at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:717) at com.itextpdf.text.Document.add(Document.java:260) at gui.GurtBearbeiten.createPdf(GurtBearbeiten.java:395) at gui.GurtBearbeiten$2.actionPerformed(GurtBearbeiten.java:298) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:2357) at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:677) ... 39 more

Zuletzt bearbeitet: 12. Dez 2012

Die NullPointerException müsste man noch weiter verfolgen. Zu deinem ursprünglichen Problem: Kann es sein, dass der Wert den "getRfid()" zurückgibt ein \n oder ähnliches enthält? Oder wird da ein Integer zurückgegeben?

Dachte ich am Anfang auch, dass noch ein "\n" mitgegeben wird, aber es ist wirklich nur eine String Zeile. Ich benutzte exakt die selbe Methode in einer anderen Klasse und dort funktioniert es... Das ist ja gerade das verwirrende für mich.???:L

Vorallem hat es vor ein paar Tagen noch funktioniert... ihrgendwo hab ich wohl währenddessen außerversehen etwas geändert, was den Fehler herbeiführt.

Zuletzt bearbeitet: 12. Dez 2012

die Fehlermeldung im ersten Posting beweist den Zeilenumbruch, du musst auch nicht 'dachten, 'wirklich' bezeugen und an frühere Vorkommnisse erinnern, du kannst den String für den Dateipfad bzw. dessen Komponenten ganz einfach untersuchen um dich zu überzeugen > C:\Users\ghorki\620183122209 > 12.12.2012.pdf vor dem Datum, nach der langen Zahl ist ein Zeilenumbruch (edit: ok, vielleicht nur im Forum extra umgebrochen bzw. sonst wie wegen des Leerzeichens dazugekommen, das weitere dann umso interessanter: ) im Zweifel bei Dateipfaden auch immer von Oberverzeichnissen aus anfangen, gegebenenfallse C:\ und mit listFiles() anschauen was da ist, mit eigenen Pfaden für Unterverzeichnisse/ letztlich Dateien vergleichen, jedes Leerzeichen kann genauso wichtig sein Strings kann man intensiv untersuchen, length(), contains(), jeder char einzeln usw. ------ die NullPointerException tritt in GurtBearbeiten.java:395 auf, es wird add() an einem Document aufgerufen,

dazu wurde noch kein Code gepostet, wie schon gesagt aber als Folgefehler anzunehmen

Zuletzt bearbeitet von einem Moderator: 12. Dez 2012

Java Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

Mach mal ein [c]trim()[/c] o.ä. auf den Getter der RFID.

Sehr sehr merkwürdig Ich habe vorhin den String mit syso auf einen Umbruch geprüft, ist aber nichts aufgetreten. Mit der length Forschleife konnt ich nun den Umbruch sehen und hab ihn dann wie folgt mit trim entfernt.

Dankeschön für eure Hilfe