Da Java, sto estraendo un eseguibile in una posizione specificata utilizzando File.createTempFile(). Quando provo a eseguire il mio eseguibile, il mio programma si blocca quando tenta di leggere la prima riga di output.Come posso rimuovere i nomi file di Windows in Java?
Ho scoperto che se provo a eseguire lo stesso eseguibile estratto da un altro programma, funziona se si specifica la directory come C: \ Documents and Settings \ nomeutente \ Impostazioni locali \ Temp \ prog.exe. Ma se si specifica la directory come C: \ DOCUME ~ 1 \ USERNA ~ 1 \ LOCALS ~ 1 \ Temp \ prog.exe ottengo il blocco.
C'è un modo per sbrogliare il nome di file tilde nel mio programma in modo da poter specificare un nome di directory che funzionerà?
(E siccome mi piace sempre affrontare i problemi di progettazione di lingua e di API, v'è alcuna ragione per cui Java File.createTempFile() e java.io.tmpdir devono valutare per i nomi di file straziati?)
Risposta migliore della mia, anche se dubito che questo sia il suo problema. –
Sembra proprio che distrugga i nomi dei file! In qualche modo si blocca ancora quando corro, però. Non capisco perché, ancora, ma ci lavoriamo ... – skiphoppy
Ah ah! Ho dovuto chiamare close() sul OutputStream che ho usato quando ho estratto l'eseguibile. Si è verificato il mio test, inavvertitamente ho passato il nome file manglinato per un eseguibile ancora in uso (e non chiuso()) dalla mia applicazione e passando un nome file completo per un'estrazione precedente non più utilizzata. – skiphoppy