一、文件用法
[1]File类位于Java.io包中,可以通过File对象的方法创建文件对象、删除文件、列表目录下的文件,判断文件是目录还是正是文件,文件系统的基本规则是:
1、文件全名包含文件路径名和扩展名,单独讲一个文件名字时,是不带路径但带扩展名的文件名。
2、同一目录下不可能存在同名的目录和真实文件,系统主要有目录型文件和真是文件两种,真实文件可以没有扩展名,另还有不需计算的虚拟内存文件;
3、相对路径指不以文件分割符开头的文件路径,绝对路径是以根目录开头的路径,当前目录是指相对于程序运行时的目录算起的相对路径。
4、liunx上,目录分隔符为/ 路径分隔符为:
在windows 上,目录分隔符为\ 路径分隔符为;
[2]File类属性
public static String pathSeparator:表示当前操作系统的路径分隔符
public static String separator:表示当前操作系统的名字分隔符
[3]File类构造器
File(File parent,String child) 在父文件目录下创建名为child的子文件对象
File(String pathname) 创建指向pathname名字下的文件对象
File(String parent,String child)以parent字符串为父录名,创建一个指向pathname的File对象
[4]重要方法
boolean exists(); 判断文件是否存在
String getName();得到文件名字(不带路径)
boolean isDirectory();判断File对象指向的文件是否为目录
boolean isFile();判断File对象指向的文件是否为真实文件
boolean mkdir();根据对象路径创建目录(仅可创建一级目录,且不能重名)
boolean mkdirs();根据对象路径创建多级目录
long length();得到File对象指向的文件长度
boolean delete();从磁盘上删除File对象指定的文件
package File;
/**
* 统计文件个数方法
* @author Administrator
*
*/
import java.io.File;
public class StatisticFile {
public static void main(String []args){
StatisticFile sf = new StatisticFile();
String path = "E:\\java\\draw";
int num = sf.statistic( path);
System.out.println("该目录下的文件个数共"+num);
long space = sf.space(path);
System.out.println("该目录下的文件大小为"+space);
}
/**
* 统计指定路径下的标准文件个数
* @param path 给定路径
* @return 给定路径下的文件个数
*/
public int statistic(String path){
int count = 0;
//根据给定路径创造文件对象
File file = new File(path);
//判断该路径是否存在
if(!file.exists()){
System.out.println("此文件路径不存在");
return 0;
}
//如果存在,装入数组中,并判断是目录还是文件
File[] fl = file.listFiles();
if(fl == null){
System.out.println("给定路径非目录!");
return 0;
}
//遍历数组,输出文件地址
for(int i=0;i<fl.length;i++){
//根据已知路径获取文件
File f = fl[i];
//得到文件路径
String str = f.getAbsolutePath();
//如果找到的是一个标准文件
if(f.isFile()){
System.out.println("找到一个文件"+str);
count++;
}else if(f.isDirectory()){
//如果找到的是一个目录
//递归调用
count+=statistic(str);
}
}
return count;
}
/**
* 统计指定目录下标准文件的总空间
* @param path 指定目录
* @return 文件的总空间
*/
public long space(String path){
long sp = 0;
//根据已知目录创造文件对象
File fl = new File(path);
//判断该路径是否存在
if(!fl.exists()){
System.out.println("该路径不存在!");
return 0;
}
//如果存在,装入数组中
File [] f = fl.listFiles();
//判断给定路径是目录还是文件
if(f==null){
System.out.println("给定路径不是目录!");
return 0;
}
//存在,遍历文件
for(int i=0;i<f.length;i++){
//创建文件对象
File file = f[i];
//获取文件的路径
String str = file.getAbsolutePath();
if(file.isFile()){
//获取对象的大小
long lo = file.length();
System.out.println("文件"+str+"的大小是"+lo);
sp+=lo;
}else if(file.isDirectory()){
//递归调用
sp+=space(str);
}
}
return sp;
}
}