2010-06-05 47 views
7

Trong java, bạn có thể sử dụng File.listRoots() để lấy tất cả các ổ đĩa trong hệ thống.Liệt kê các ổ đĩa ngoài

tôi đang tìm cách để có được chỉ các ổ đĩa bên ngoài, ví dụ: ổ đĩa USB, đĩa cứng gắn ngoài, ổ đĩa quang, đĩa mềm vv

Có cách nào để làm điều đó trong java? Nếu không, mã C++ gốc cũng sẽ tốt. Trong trường hợp đó, tôi cần cả mã Windows và Linux.

+0

Phần mềm sẽ biết cách gắn ổ đĩa? Ngoại trừ ổ đĩa vật lý chính, tất cả các ổ đĩa đều có thể được gắn bên trong hoặc bên ngoài. Có lẽ là một cách để khởi động từ một đĩa CD bên ngoài và truy cập một ổ đĩa ngoài, mà không có bất kỳ ổ đĩa nào cả. –

Trả lời

0

Bạn có thể sử dụng WMI hoặc nhìn vào

GetRawInputDeviceList()

GetRawInputDeviceInfo()

này sẽ giúp bạn bắt đầu

C++

http://cboard.cprogramming.com/windows-programming/114294-getting-list-usb-devices-listed-system.html

Java

http: // forums.java.net/jive/thread.jspa?threadID=37942

+0

Câu trả lời của bạn dường như nghiêng về phía các thiết bị đầu vào (bàn phím và chuột) thay vì các thiết bị lưu trữ dung lượng lớn. –

+0

Bạn có một điểm tốt! –

12

Để nhận được thông tin hệ thống tập tin, sử dụng một cái gì đó như:

import java.io.*; 
import javax.swing.filechooser.*; 

public class DriveTypeInfo 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("File system roots returned by FileSystemView.getFileSystemView():"); 
     FileSystemView fsv = FileSystemView.getFileSystemView(); 
     File[] roots = fsv.getRoots(); 
     for (int i = 0; i < roots.length; i++) 
     { 
     System.out.println("Root: " + roots[i]); 
     } 

     System.out.println("Home directory: " + fsv.getHomeDirectory()); 

     System.out.println("File system roots returned by File.listRoots():"); 

     File[] f = File.listRoots(); 
     for (int i = 0; i < f.length; i++) 
     { 
     System.out.println("Drive: " + f[i]); 
     System.out.println("Display name: " + fsv.getSystemDisplayName(f[i])); 
     System.out.println("Is drive: " + fsv.isDrive(f[i])); 
     System.out.println("Is floppy: " + fsv.isFloppyDrive(f[i])); 
     System.out.println("Readable: " + f[i].canRead()); 
     System.out.println("Writable: " + f[i].canWrite()); 
     } 
    } 
} 

Cũng xem this, thisthis câu hỏi.

+0

tốt nó vẫn không trả lời nếu một ổ đĩa là nội bộ hoặc bên ngoài –

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