2010-10-31 33 views
18

Hiện tại tôi đang làm việc trong một nhóm chơi! ứng dụng khung.
Câu chuyện người dùng tiếp theo tôi phải triển khai thực hiện một số sửa đổi tệp khác nhau, ví dụ: di chuyển một tập tin vào một thư mục được xác định.Làm cách nào để tìm đường dẫn tuyệt đối cho ứng dụng khung chơi?

Vì chúng tôi đang làm việc trên các nền tảng khác nhau, tôi không phải lúc nào cũng thực sự chắc chắn liệu ứng dụng có đúng đường dẫn hay không. Vì vậy, tôi muốn làm việc với một đường dẫn tuyệt đối của thư mục ứng dụng.

Làm cách nào để có được đường dẫn tuyệt đối của trò chơi! ứng dụng? Có phương pháp nào không?

+3

"Hiện tại tôi đang làm việc trong nhóm trên ứng dụng khung!" Tuyệt! – sirmak

Trả lời

18

Play đều có một đặc tính con đường ứng dụng:

String projectRoot = Play.applicationPath; 

này sẽ cung cấp cho bạn các thư mục đó Chơi đang chạy từ.

Tôi nghĩ thực hành tốt hơn là di chuyển thư mục ra ngoài thư mục cài đặt dự án của bạn và đặt đường dẫn đến thư mục trong thuộc tính application.conf của bạn. Sau đó bạn lấy nó khi cần thiết. Ví dụ:

Application.conf:

my.file.path=/tmp/whatever 

Code:

String projectRoot = Play.configuration.getProperty("my.file.path"); 
+5

Thao tác này không hoạt động trên phiên bản Play tôi đang sử dụng (2.1.1). Có vẻ như cách chính xác để lấy đường dẫn ứng dụng là: String path = Play.application(). Path(). GetPath(); – JDischler

+0

Điều này phù hợp với tôi trên Phiên bản Play 1.2.4 – Elijah

2

Không những làm việc trên phiên bản của tôi về chơi, vì vậy tôi sử dụng này để thay thế: Play. current(). path(). getAbsolutePath()

9

Khi chơi 2.0: play.Play.applica tion(). path(). getAbsolutePath()

9

Kể từ phiên bản 2.5.0, play.Play không được dùng nữa. Đó là khuyến cáo để tiêm play.Environment và sử dụng phương pháp này như sau:

public File rootPath(); 

Các play.Environment singleton cũng chứa một số phương pháp rất tiện dụng, trong đó cung cấp các file bằng đường dẫn tương đối ví dụ

public File getFile(String relativePath); 
public URL resource(String relativePath); 
public InputStream resourceAsStream(String relativePath); 
+0

Bạn có thể vui lòng cho biết địa điểm và cách thức tiêm môi trường này không? – JulienD

+0

@JulienD, cách tốt nhất (có thể phụ thuộc vào yêu cầu ứng dụng và thiết kế của bạn) sẽ là sử dụng 'play.Environment' trong mô-đun của bạn. Hãy xem ví dụ này: https://www.playframework.com/documentation/2.5.x/JavaDependencyInjection#Configurable-bindings - bạn có thể sử dụng môi trường instace trong khi tạo bean/dịch vụ của bạn, v.v. – Tom

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