2009-06-26 33 views

Trả lời

71

Chỉ cần nhìn vào lớp Tệp documentation. Đây là một trong những tính năng mới trong phiên bản 1.6.

Những phương pháp mới cũng bao gồm:

  • public long getTotalSpace()
  • public long getFreeSpace()
  • public long getUsableSpace()

Nếu bạn vẫn đang sử dụng 1,5 sau đó bạn có thể sử dụng thư viện Apache Commons IO và nó FileSystem class

+10

Lưu ý rất quan trọng mà getUsableSpace không bằng getFreeSpace. Ví dụ, trên các hệ thống tệp Linux, các phân vùng thường có một số khối dành riêng. Chúng được bao gồm trong giá trị trả về bởi getFreeSpace() nhưng không có giá trị từ getUsableSpace(). Vì vậy, nếu bạn quan tâm đến bao nhiêu không gian bạn phải viết các tập tin trong, sử dụng getUsableSpace - KHÔNG getFreeSpace(). – Mikkel

+0

"Bạn đang sử dụng", không phải "bạn đang sử dụng", vì Chúa. Lớp hệ thống của nó. – biggvsdiccvs

6

Link

Nếu bạn là một lập trình viên Java, bạn có thể đã đã được yêu cầu này đơn giản, stupide câu hỏi: “làm thế nào để tìm ra dung lượng đĩa trống còn lại trên hệ thống của tôi?”. Vấn đề là câu trả lời là phụ thuộc vào hệ thống. Trên thực tế, đây là triển khai thực hiện là hệ thống phụ thuộc . Và cho đến gần đây, không có giải pháp duy nhất để trả lời câu hỏi này, mặc dù nhu cầu có đã được ghi vào Cơ sở dữ liệu lỗi của Sun kể từ tháng 6 năm 1997. Bây giờ có thể nhận được không gian đĩa miễn phí trong Java 6 với a trong tệp lớp, trong đó trả lại số lượng không phân bổ byte trong phân vùng có tên là tên đường dẫn trừu tượng. Nhưng bạn có thể là quan tâm đến không gian đĩa có thể sử dụng (có thể ghi được). Nó thậm chí còn có thể là để có được tổng dung lượng đĩa của một phân vùng với phương thức getTotalSpace().

15

Sử dụng CommonsIO và FilesystemUtils:

http://commons.apache.org/io/api-release/org/apache/commons/io/FileSystemUtils.html#freeSpaceKb(java.lang.String)

ví dụ

FileSystemUtils.freeSpaceKb("/"); 

hoặc được xây dựng vào JDK:

http://java.sun.com/javase/6/docs/api/java/io/File.html#getFreeSpace()

new File("/").getFreeSpace(); 
+0

Có chức năng tích hợp nào khác phục vụ mục đích mà không cần tạo tệp mới không? – user892871

+4

Nó không tạo tệp mới trên đĩa, chỉ là đối tượng Tệp, nếu đó là điều bạn lo lắng về –

+1

'FileSystemUtils' chỉ thực hiện lệnh" df "(hoặc sử dụng DIR trên cửa sổ). khá khủng khiếp. –

45

Java 1.7 có một API hơi khác nhau, không gian miễn phí có thể được truy vấn thông qua các lớp FileStore qua getTotalSpace(), getUnallocatedSpace()getUsableSpace() phương pháp .

NumberFormat nf = NumberFormat.getNumberInstance(); 
for (Path root : FileSystems.getDefault().getRootDirectories()) { 

    System.out.print(root + ": "); 
    try { 
     FileStore store = Files.getFileStore(root); 
     System.out.println("available=" + nf.format(store.getUsableSpace()) 
          + ", total=" + nf.format(store.getTotalSpace())); 
    } catch (IOException e) { 
     System.out.println("error querying space: " + e.toString()); 
    } 
} 

Ưu điểm của API này là bạn nhận được ngoại lệ có ý nghĩa khi truy vấn không gian đĩa bị lỗi.

+1

Trên Linux Debian, hàm FileSystems.getDefault(). GetRootDirectories() chỉ trả về thư mục "/". – pako

2

khi kiểm tra không gian đĩa bằng java bạn có phương thức sau trong java.io lớp File

  • getTotalSpace()
  • getFreeSpace()

mà chắc chắn sẽ giúp bạn trong việc có được thông tin cần thiết. Ví dụ, bạn có thể tham khảo http://javatutorialhq.com/java/example-source-code/io/file/check-disk-space-java/ đưa ra một ví dụ cụ thể trong việc sử dụng các phương pháp này.

+0

Chào mừng bạn đến với Stack Overflow! Xin lưu ý rằng các liên kết trống đến trang web/sản phẩm của bạn không được khuyến khích ở đây vì hai lý do; Đầu tiên, câu trả lời phải được đăng dưới dạng câu trả lời tự chứa, không phải là liên kết đơn thuần tới trang web bên ngoài. Thứ hai, tự quảng cáo có xu hướng bị cau mày khi ở đây và thường bị gắn cờ là spam (đặc biệt là nếu không có tiết lộ nào mà bạn đang liên kết đến trang web/sản phẩm của riêng bạn). –

-1
public class MemoryStatus{ 
public static void main(String args[])throws Exception{ 
    Runtime r=Runtime.getRuntime(); 
    System.out.println("Total Memory: "+r.totalMemory()); 
    System.out.println("Free Memory: "+r.freeMemory());  
} 
} 

Hãy thử mã này để có được diskspace

+1

Mã này dành cho bộ nhớ, không phải dung lượng ổ đĩa. –

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