我尝试了以下程序
import java.io.*;
class dr
{
public static void main(String args[])
{
try{
File[] roots = File.listRoots();
for (int index = 0; index < roots.length; index++)
{ //Print out each drive/partition
System.out.println(roots[index].toString());
}
}
catch(Exception e)
{
System.out.println("error " +e);
}
}
}
但是在我的系统中软盘驱动器未连接而且我收到类似以下的消息
“该驱动器尚未准备就绪;它的门可能已打开,请检查驱动器A:并确保已插入磁盘且驱动器门已关闭”然后显示三个选项取消,重试,继续当我尝试继续时,它有效但是我如何避免该味精
您想做什么?
我的建议是使用FileSystemView。
使用过这样的东西:
FileSystemView fsv = FileSystemView.getFileSystemView();
File[] roots = fsv.getRoots();
for (File f: roots) {
System.out.println(fsv.getSystemDisplayName(f);
}
package com.littletutorials.fs;
import java.io.*;
import javax.swing.filechooser.*;
public class DriveTypeInfo
{
public static void main(String[] args)
{
System.out.println("File system roots returned byFileSystemView.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());
System.out.println("Total space: " + f[i].getTotalSpace());
System.out.println("Usable space: " + f[i].getUsableSpace());
}
}
}
参考:http://littletutorials.com/2008/03/10/getting-file-system-details-in-java/
关于Windows,此class WindowsAltFileSystemView
提出了一个基于FileSystemView的替代方法
此类是必需的,因为Windows NT上有一个令人讨厌的错误,在该错误中,使用默认的
WindowsAltFileSystemView
实例化JFileChooser
每次都会导致“FileSystemView
”错误。我从1.3 SDK中获取了Windowsdrive A: not ready
impl,并对其进行了修改,以便*不使用FileSystemView
获取文件系统根目录。[
java.io.File.listRoots()
进行了java.io.File.listRoots()
,即使没有磁盘,OS也会尝试访问驱动器SecurityManager.checkRead()
] >>,每次我们实例化A:
时,都会引起讨厌的“abort, retry, ignore
”弹出消息]!因此,这里的想法是扩展
JFileChooser
,将FileSystemView
方法替换为:
getRoots()
您可以使用它;