2012-01-12 27 views
6

Có thể lấy tên tệp đang được thực hiện hay không. Ví dụ: Nếu tôi đang chạy một tập tin Jar, và bên trong tôi muốn thêm chức năng mã có thể phát hiện tên tập tin để nếu jar này được đổi tên, mã sẽ có thể phát hiện ra.Nhận tên tệp đang chạy trong Java?

Có khả năng thực hiện việc này mà không quét các tệp trong thư mục hiện tại không?

+0

thực tôi không muốn dete ct này bằng cách sử dụng PID hiện tại, tự hỏi nếu có một số bulit java trong hỗ trợ cho điều này? – Johnydep

+1

tại sao downvote? câu hỏi của tôi là hợp pháp. – Johnydep

+0

Liên quan: http://stackoverflow.com/questions/320542/how-to-get-the-path-of-a-running-jar-file – jalopaba

Trả lời

4

Hãy thử điều này:

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
String decodedPath = URLDecoder.decode(path, "UTF-8"); 

http://www.rgagnon.com/javadetails/java-0300.html

http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getProtectionDomain()

http://docs.oracle.com/javase/7/docs/api/java/security/ProtectionDomain.html

+0

cảm ơn mặc dù không có trong tất cả các trường hợp nhưng nó hoạt động một phần, Có bất kỳ tài liệu nào về các phương pháp được xác định ở trên không? – Johnydep

+0

Cảm ơn đó là chính xác những gì tôi đang tìm kiếm :) – Johnydep

-2

bạn có thể kiểm tra xem System.getenv() có một số giá trị chỉ ra mà tập tin đã được gọi

+0

System.getenv() không bao giờ hiển thị thông tin đó. – Johnydep

Các vấn đề liên quan