2012-06-15 37 views
5

Tôi cần một cái gì đó để có được số lượng liên kết cứng từ một tập tin trong một os solaris10 trong java.nhận được số lượng liên kết cứng trong Java

phân tích cú pháp ls -l không phải là một tùy chọn.

Tôi đã thử sử dụng posix cho java http://bmsi.com/java/posix/index.html nhưng không thể quản lý để làm cho nó hoạt động.

Có API hoặc mã nhẹ nào khác để nhận thông tin này không?

+0

"ls -l | wc -l" không hoạt động? – alfasin

+0

@alfasin: Ngắn _parsing 'ls' không phải là một option_? –

+0

@ K-ballo xin lỗi - Tôi không hiểu câu hỏi của bạn Q. – alfasin

Trả lời

8

Trong Java 7, bạn có thể sử dụng số file attributes API mới để có được nó với java.nio.file.Files.getAttribute(path, "unix:nlink").

Chế độ xem thuộc tính "unix" không thực sự được xác định là một phần của API chuẩn (và chế độ xem "posix" không cung cấp cho bạn nlink), nhưng có sẵn trong triển khai Oracle/OpenJDK chuẩn. Mặt khác, tạo liên kết hiện khả dụng với phương pháp createLink tiêu chuẩn trên Files. Đi con số.

+0

Tuyệt vời ... quá tệ, chúng tôi đã có 6 như tiêu chuẩn của chúng tôi ngay bây giờ. :( – DRTauli

+0

Vì vậy, bạn nên lên kế hoạch nâng cấp, vì [Java 6 sẽ không hoạt động trong 5 tháng (tháng 11 năm 2012)] (http://www.oracle.com/technetwork/java/eol-135779.html). – Tometzky

2

ngắn của using JNIstat/lstat trong C điều duy nhất tốt hơn so với phân tích ls sẽ chạy:

stat --format=%h filename 

mà chỉ xuất ra một số lượng và rất dễ dàng để phân tích.

Nhưng mọi thứ trở nên phức tạp khi có thể có các ký tự không phải ascii trong tên tệp. Bạn cần chuyển đổi tên tệp thành mã hóa gốc và đôi khi không phải tất cả các ký tự được phép trong tên tệp đều có thể được chuyển đổi (nếu mã hóa gốc không phải là loại unicode).

+0

Làm mát nó hoạt động. Cảm ơn! nhưng một trong những máy chủ tôi đã thử nghiệm nó trên không có stat ... Có bất kỳ giải pháp khác mà không yêu cầu cài đặt hoặc một cái gì đó ... cảm ơn trước. :) – DRTauli

+0

là chỉ một ứng dụng linux? – DRTauli

0

Đồng thời xem xét thử việc triển khai jnr-posixstat (2) cho việc này.

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