Từ Java, tôi trích xuất một tệp thực thi vào một vị trí được chỉ định bằng File.createTempFile(). Khi tôi cố chạy chương trình thực thi của mình, chương trình của tôi bị treo khi nó cố đọc dòng đầu tiên đầu ra.Làm thế nào để loại bỏ tên tệp Windows trong Java?
Tôi đã phát hiện ra rằng nếu tôi cố gắng chạy cùng một tệp thực thi được trích xuất từ một chương trình khác, nó hoạt động nếu tôi chỉ định thư mục là C: \ Documents and Settings \ username \ Local Settings \ Temp \ prog.exe. Nhưng nếu tôi chỉ định thư mục là C: \ DOCUME ~ 1 \ USERNA ~ 1 \ LOCALS ~ 1 \ Temp \ prog.exe Tôi sẽ bị treo.
Có cách nào để gỡ bỏ tên tệp tilde trong chương trình của tôi để tôi có thể chỉ định tên thư mục sẽ hoạt động không?
(Và kể từ khi tôi luôn luôn như giải quyết các vấn đề thiết kế ngôn ngữ và API, là có bất kỳ lý do tại sao Java File.createTempFile() và java.io.tmpdir phải đánh giá để tên tập tin đã bị đọc sai?)
Câu trả lời hay hơn tôi, mặc dù tôi nghi ngờ đây là vấn đề của anh ấy. –
Điều đó thực sự dường như làm xáo trộn tên tập tin! Bằng cách nào đó nó vẫn treo khi tôi chạy, mặc dù. Tôi không hiểu tại sao, nhưng, nhưng làm việc trên nó ... – skiphoppy
Ah hah! Tôi đã phải gọi close() trên OutputStream mà tôi đã sử dụng khi trích xuất tệp thực thi. Hóa ra bài kiểm tra của tôi, tôi vô tình chuyển tên tệp bị xén cho một tệp thi hành vẫn đang được sử dụng (và không đóng()) và chuyển tên tệp đầy đủ cho lần khai thác trước đó không còn được sử dụng nữa. – skiphoppy