Z Java wypakowuję plik wykonywalny do określonej lokalizacji przy użyciu File.createTempFile(). Kiedy próbuję uruchomić mój plik wykonywalny, mój program zawiesza się, gdy próbuje odczytać pierwszy wiersz danych wyjściowych.Jak odłączyć nazwy plików systemu Windows w języku Java?
Odkryłem, że jeśli spróbuję uruchomić ten sam wyodrębniony plik wykonywalny z innego programu, działa, jeśli określę katalog jako C: \ Documents and Settings \ nazwa_użytkownika \ Ustawienia lokalne \ Temp \ prog.exe. Ale jeśli określę katalog jako C: \ DOCUME ~ 1 \ USERNA ~ 1 \ LOCALS ~ 1 \ Temp \ prog.exe, zawiesi się.
Czy istnieje sposób na odblokowanie nazwy pliku tyldy w moim programie, aby można było podać nazwę katalogu, która będzie działać?
(A ponieważ ja zawsze jak rozwiązywaniu problemów projektowych językowe i API, jest jakiś powód, dla którego Java File.createTempFile() i java.io.tmpdir trzeba ocenić na zniekształconych nazw?)
Lepsza odpowiedź niż moja, choć wątpię, że to jego problem. –
Rzeczywiście, wydaje się, że odszyfrowano nazwy plików! Wciąż jednak wisi, kiedy biegnę. Nie rozumiem dlaczego, ale pracuję nad tym ... – skiphoppy
Ah hah! Musiałem wywołać metodę close() na OutputStream, której użyłem przy wyodrębnianiu pliku wykonywalnego. Okazuje się, że nieumyślnie przekazałem zmanipulowaną nazwę pliku wykonywalnemu, który nadal jest w użyciu (i nie jest zamknięty()) przez moją aplikację, i przekazałem pełną nazwę pliku dla niezużytego wcześniejszego ekstrakcji. – skiphoppy