使用java如何获得驱动器、目录属性信息(java不至于这么傻吧?__平台独立性的代价?在java平台下,此类问题应该谁来担当__win or linux?ja

  • 主题发起人 主题发起人 z1w2x3
  • 开始时间 开始时间
Z

z1w2x3

Unregistered / Unconfirmed
GUEST, unregistred user!
使用java如何获得驱动器、目录属性信息(java不至于这么傻吧?__平台独立性的代价?在java平台下,此类问题应该谁来担当__win or linux?java or delphi?) (50分)<br />各位大侠:
使用java如何获得驱动器、目录属性信息,如:
1)驱动器容量,剩余空间,
2)目录大小,创建时间
此类和硬件等低层有关的问题,JAVA如何解决?
 
//File类的函数
File(String pathname) // 构造函数
File(File parent, String child)
File(String parent, String child)
boolean canRead() // 测试文件是否可以读取
boolean canWrite() // 测试文件是否可以写入
int compareTo(File pathname) // 根据比较字符串的规则来比较文件的路径是否相等,相等返回0;小于返回负数;大于返回正数
boolean createNewFile() // 打开新文件
boolean delete() // 删除文件
boolean equals(Object obj) // 根据比较字符串的规则来比较文件的路径是否相等,相等返回true;不相等返回false
boolean exists() // 测试文件是否存在
String getAbsolutePath() // 取得文件的绝对路径
String getName() // 取得文件名称
String getParent() // 取得上层文件的路径
String getPath() // 取得文件的路径
boolean isAbsolute() // 测试文件路径是否为绝对路径
boolean isDirectory() // 测试是否为目录
boolean isFile() // 测试是否为文件
boolean isHidden() // 测试文件属性是否为隐藏
long lastModified() // 取得文件最后修改的时间
long length() // 取得文件大小
String[] list() // 取得文件列表(以String数组存储)
File[] listFiles() // 取得文件列表(以File数组存储)
static File[] listRoots() // 取得系统根目录(以File数组存储)
boolean mkdir() // 兴建目录
boolean mkdirs() // 兴建目录,包括路径中不存在的目录
boolean renameTo(File dest) // 更改文件名称
boolean setLastModified(long time) // 设定文件的最后修改时间
boolean setReadOnly() // 设定文件的属性为只读
String toString() // 将文件的路径转换为字符串
//目录也是一种文件,但可以存放其它目录或文件;而一般文件只能存放数据。
//例如
File FilePath = new File(Path);
System.out.println("路径: " + FilePath.getParent());
System.out.println("文件名: " + FilePath.getName());
System.out.println("绝对路径: " + FilePath.getAbsolutePath());
System.out.println("文件大小: " + FilePath.length());
System.out.println("是否为文件: " + (FilePath.isFile()?"是":"否"));
System.out.println("是否为目录: " + (FilePath.isDirectory()?"是":"否"));

System.out.println("是否为隐藏: " + (FilePath.isHidden()?"是":"否"));
System.out.println("是否可读取: " + (FilePath.canRead()?"是":"否"));
System.out.println("是否可写入: " + (FilePath.canWrite()?"是":"否"));
System.out.println("最后修改时间: " + new Date(FilePath.lastModified()));
 
//再如(作用类似于Dir命令)
File ListFile[];
if(args.length != 1) { //由命令行参数读入路径
System.out.println("MyDir使用方法: java ch4_7 <路径>");
return;
}
File FilePath = new File(args[0]);
//生成File对象
if(FilePath.exists() != true) { //若文件不存在则结束程序
System.out.println(FilePath.getPath() + "不存在!!!");
return;
}
if(FilePath.isDirectory()) //若路径为目录时
{
ListFile = FilePath.listFiles();
//取得文件列表
for(int i=0;i<ListFile.length;i++)
{
System.out.print((ListFile.canRead()?"R":"X"));
System.out.print((ListFile.canWrite()?"W":"X"));
System.out.print((ListFile.isHidden()?"H":"X"));
System.out.print((ListFile.isDirectory()?"D":"X") + " ");
System.out.print(new Date(ListFile.lastModified()) + " ");
System.out.print(ListFile.length() + " ");
System.out.print(ListFile.getName() + "/n");
if(ListFile.isFile()) FileCount++;
//计算文件数
else
DirectoryCount++;
//计算目录数
totalSize = totalSize + ListFile.length();//计算文件大小总和
}

System.out.println("/n/t/t目录数: " + DirectoryCount);
System.out.println("/t/t文件数: " + FileCount);
System.out.println("/t/t总字节: " + totalSize);
}
 
to: wukw
1: 我问题的核心:如何获得一个驱动器的大小?
2: 采用文件大小相加的方法计算一个目录的大小,这办法虽可取,但不实用,试想一想,如果一个目录
中有子目录,子目录中有子目录......,文件总数是一个特别大的数字的话,还不把机器累死,
也要考虑速度问题,而这个问题在ASP语言中用一个API(filesystem 对象)函数就可以解决,java也不至于这么差吧?
谢谢
 
java 是不是还应该为:windows,linux,apple各开发一些接口,到那时,java 也就变成“非”
平台独立性了,会让他们牵着鼻子走.
 
你的问题只能自己用jni解决了
 
后退
顶部