Aus Java extrahiere ich eine ausführbare Datei an einen Speicherort, der mit File.createTempFile() angegeben wurde. Wenn ich versuche, meine ausführbare Datei auszuführen, hängt mein Programm, wenn es versucht, die erste Zeile der Ausgabe zu lesen.Wie entschärfte ich Windows Dateinamen in Java?
Ich habe festgestellt, dass, wenn ich versuche, die gleiche extrahierte ausführbare Datei von einem anderen Programm auszuführen, funktioniert, wenn ich das Verzeichnis C: \ Dokumente und Einstellungen \ Benutzername \ Lokale Einstellungen \ Temp \ prog.exe angeben. Aber wenn ich das Verzeichnis als C: \ DOCUME ~ 1 \ USERNA ~ 1 \ LOCALS ~ 1 \ Temp \ prog.exe angeben, bekomme ich den Hang.
Gibt es eine Möglichkeit, den Tilde-Dateinamen in meinem Programm zu entmangeln, damit ich einen Verzeichnisnamen angeben kann, der funktioniert?
(Und da ich immer wie die Sprache und API Design-Fragen Adressierung, gibt es keinen Grund, warum Java File.createTempFile() und java.io.tmpdir zu verstümmelte Dateinamen zu bewerten haben?)
Bessere Antwort als meine, obwohl ich bezweifle, dass dies sein Problem ist. –
Das scheint tatsächlich die Dateinamen zu entfremden! Irgendwie hängt es immer noch, wenn ich renne. Ich verstehe nicht, warum, aber, aber daran arbeiten ... – skiphoppy
Ah hah! Ich musste close() auf dem OutputStream aufrufen, den ich benutzte, als ich die ausführbare Datei extrahierte. Bei meinem Test wurde versehentlich der fehlende Dateiname für eine ausführbare Datei (und nicht geschlossen()) von meiner Anwendung übergeben und ein vollständiger Dateiname für eine nicht mehr verwendete vorherige Extraktion übergeben. – skiphoppy