Frage

Ich bin eine Datei wie so zu schaffen

try {
    File file = new File(workingDir, obj.getName() + ".xls");
    outputStream = new FileOutputStream(file);
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

Und ich bin immer

java.io.FileNotFoundException: ..\a\relative\path\obj_name.xls (The parameter is incorrect)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)

Was bedeutet „der Parameter ist falsch“ zu verstehen? Der Pfadname I validiert existiert; es schaffen soll nicht nur die Dateinamen? Dies ist auf einem Windows-Rechner. Der Code funktioniert ohne diesen Fehler auf Unix-basierten Systemen.


Aktualisieren

überprüft, dass die Datei vorhanden ist, dass der Ausgangsstrom zu schreiben versucht. Auch Nachweis erbracht, dass die Datei beschreibbar ist. Nach viel Getue, entfernte ich den tatsächlichen Pfad und nur in den Dateinamen (nicht gewünscht) und das funktioniert übergeben. So hat das Problem etwas mit dem Weg zu tun. Muss ich die Zeichen auf dem Weg zu entkommen?

War es hilfreich?

Lösung

Das sieht wie ein berichtet Bug auf Windows-Rechnern.

Unter normalen Situationen, so etwas wie ein Pfad, der einen Doppelpunkt hat (:) darin, die mit einem Laufwerksbuchstaben bezieht sich nicht diese Meldung verursachen würde.

Andere Tipps

Es scheint ein Problem mit dem Weg zu sein, die Sie verwenden. Versuchen Sie es mit file.getPath (), bevor Sie es öffnen zu debuggen, was mit Ihrem Weg vor sich geht.

File file = new File(workingDir, obj.getName() + ".xls");
System.out.println("Path="+file.getPath());
outputStream = new FileOutputStream(file);

Wenn Sie Ihre „workingDir“ ein relativer Pfad ist, dann sind Sie sicher, dass Sie auf dem richtigen „aktuellen Verzeichnis“ sind, wenn Sie Ihre App von UNIX zu Windows bewegt? Vielleicht sollten Sie überprüfen, was das aktuelle Verzeichnis der laufenden Anwendung ist.

Vielleicht ist die Anwendung nicht den richtigen Zugriff auf die Datei zu schreiben? Ist es schreibgeschützt oder anderweitig geschützt?

FileOutputStream.open() ist eine native Methode, ich jede Art von Ausnahmemeldung annehmen würde, wie zum Beispiel „Der Parameter ist falsch“ aus dem zugrunde liegenden Betriebssystem kommt.

BTW: der File Konstruktor FileOutputStream.open() nicht nennen, so ist die Ausnahme nicht tatsächlich aus dem Code kommen Sie hier gepostet

?

Vielleicht ist es wegen der Schrägstriche in den Weg? Pfad zu lang? Dateiname ungültig für diesen Fehler (spezielle caracters ...)?

Ich könnte völlig falsch sein, aber einen Versuch wert, da es wie ein O abhängigen Fehler klingt.

Stellen Sie sicher, dass der Benutzer, der die JVM-Prozess ausgeführt wird, die richtigen Berechtigungen verfügt, die Datei zugreifen zu können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top