Depuis Java, j'extrais un exécutable dans un emplacement spécifié à l'aide de File.createTempFile(). Lorsque j'essaie d'exécuter mon exécutable, mon programme se bloque lorsqu'il essaie de lire la première ligne de sortie.Comment désemméler les noms de fichiers Windows en Java?
J'ai découvert que si j'essaie d'exécuter le même exécutable extrait à partir d'un autre programme, cela fonctionne si je spécifie le répertoire C: \ Documents and Settings \ nom_utilisateur \ Local Settings \ Temp \ prog.exe. Mais si je spécifie le répertoire comme C: \ DOCUME ~ 1 \ USERNA ~ 1 \ LOCALS ~ 1 \ Temp \ prog.exe je reçois le coup.
Existe-t-il un moyen de démonter le nom de fichier tilde dans mon programme afin que je puisse spécifier un nom de répertoire qui fonctionnera?
(Et puisque je aime toujours aborder les problèmes de conception et de langue API, est-il une raison pour laquelle Java File.createTempFile() et java.io.tmpdir doivent évaluer les noms de fichiers déchiquetés?)
Mieux vaut répondre que le mien, même si je doute que c'est son problème. –
Cela semble en effet démystifier les noms de fichiers! D'une manière ou d'une autre, ça continue de se bloquer quand je cours. Je ne comprends pas encore pourquoi, mais je travaille dessus ... – skiphoppy
Ah ah! J'ai dû appeler close() sur le OutputStream que j'ai utilisé quand j'ai extrait l'exécutable. Il s'avère que lors de mon test, je passais par inadvertance le nom de fichier altéré pour un exécutable encore utilisé (et non fermé()) par mon application, et en passant un nom de fichier complet pour une extraction précédente non utilisée. – skiphoppy