2010-09-15 34 views
5

Tôi đang viết các trường hợp thử nghiệm phải được thực hiện trong môi trường osgi, tôi đã đặt dữ liệu thử nghiệm là tập hợp các tệp trong gói thử nghiệm. Tôi có thể truy cập các tệp dữ liệu thử nghiệm bằng cách sử dụng bundle.getResource trả về một URL mà từ đó tôi có thể lấy InputStream cho một tệp cụ thể, nhưng làm cách nào tôi có thể tìm ra tất cả danh sách tệp trong một thư mục cụ thể trong plugin thử nghiệm. Trong eclispe tôi có thể sử dụng fileLocator để làm điều này.Tìm tệp và thư mục trong Gói OSGI

/bó
          TestData
                one.txt
                two.txt
                three.txt
                folder1
                              file1.txt
                              file2.txt

Trong bó trên tôi muốn tìm tất cả các tập tin và thư mục có mặt trong thư mục TestData.


Reards nhất,
Keshav

Trả lời

-5

Tài (lớp, các file, suối vv) truy cập bởi classloader có thể được cung cấp bởi tất cả mọi thứ. Thông thường, các tài nguyên được tải từ một tệp JAR. Nhưng nó có thể là cơ sở dữ liệu, hệ thống tệp hoặc tài nguyên HTTP. Vì vậy, để có được một danh sách các tài nguyên, bạn phụ thuộc vào nguồn đằng sau trình nạp lớp. Trong trường hợp các tài nguyên được đặt bên trong một JAR, bạn sẽ cần có được bản thân JAR và truy cập nó thông qua ví dụ: java.util.zip. Vì giao diện ClassLoader không cung cấp thông tin về nguồn đằng sau, bạn phải đi theo các cách khác (như hooking vào khung công tác OSGi mà bạn sử dụng).

+3

Sai !!! Lặp lại các tập tin zip, vv là không di động trong Java, Java có một trừu tượng cho các tài nguyên đó là hoàn toàn bị hỏng. Đó là một thực hành rất tồi tệ là tiếc là phổ biến bởi vì bộ nạp lớp không có một trình lặp cho tài nguyên của họ. Xem câu trả lời của BJ: OSGi có Bundle.findEntries và Bundle.getEntryPaths cho phép bạn lặp qua tài nguyên theo cách di động. –

12

Nếu bạn biết thông tin của gói là gì, hãy sử dụng Bundle.findEntries hoặc Bundle.getEntryPaths.

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