系统中的文件可分为三种:目录文件、真实文件、缓存文件。java抽象类File提供了一些方法用来操纵文件和获得文件的信息。通过File类中的方法可以得到文件或目录的描述信息,包括名称,路径,读写性,长度,修改日期等;也可以生成新的目录,临时文件,改变文件名,删除文件,列出一个目录中所有的文件或找到与条件相匹配的文件等。
一.不管是以上何种操作,首先是创建一个新的文件对象
创建任何一个文件,则需要有路径名,路径名用字符串表示
String filename = “D:\\myfile”;其中因为字符 ’\’ 属于转义字符,所以再加一个’\’, 这样才能真正表示一个文件的路径名,如果只有文件名而没有指定目录,则会在当前目录下面创建文件 ,构造方法主要有以下三种:
File (File parent, String child) ;
据 parent 路径名和 child 名字符串创建一个新 File 实例。
File(String pathname)
通过给定的路径名字符串创建一个新 File 实例。
File(String parent, String child)
据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
具体用哪一种方法取决于访问文件的方式 。
二.Java文件输入输出类库继承关系
三.文件的具体操作
1.获取路径:File f=new File(“data”,temp.dat”);
f.getName():返回文件名字符串 “ temp.dat”;
f.getParent():返回文件所在目录名 “ data”
f.getPath():返回文件路径 “data\temp.dat”
f.getAbsolutePath():返回绝对路径 ” c:\myprog\data\temp.dat”
2.文件名操作:
Public String toString()返回文件名字符串
Public File getParentFile():返回文件对象父文件名
public getCanonicalPath() 返回规范的路径名称
3.文件属性测试
Public boolean canRead(): 是否能读指定文件
Public boolean canWrite():是否能修改指定文件
Public boolean exists():指定的文件是否存在
Public boolean isDirectory():测试对象是否是目录
Public boolean isAbsolute(): 测试路径是否为绝对路径,win32系统中绝对路径以“\\”或盘符后跟“\\”开始
Public boolean isFile():测试对象是否是文件
Public boolean isHidden():测试指定文件是否是隐藏文件
与以上对应的则有文件属性的设置,这里就不说了
(如想了解更多可以查看API文档)
实例1:统计指定目录下的文件和目录的个数,以及文件夹的大小
import java.io.File;
import java.io.FileFilter;
public class FileDisplay{
/*文件个数*/
private int filecount = 0;
/*目录个数*/
private int mlcount = 0;
/*文件总长度*/
private long length=0;
/**
* 程序主方法
* @param args
*/
public static void main(String[] args) {
/*创建对象*/
FileDisplay display = new FileDisplay();
/*指定路径*/
String name = "D:\\李瑞辉\\0725\\画图板";
/*进行统计*/
display.getCount(name);
/*输出结果*/
System.out.println(name + "目录下共找到 " + display.filecount + " 文件");
System.out.println(name + "目录下共找到 " + display.mlcount + " 目录");
System.out.println(name + "目录长度为" + display.length);
}
/**
* 进行统计的方法
* @param name:指定路径
*/
public void getCount(String name) {
/*新建文件*/
File file = new File(name);
/*列出路径名*/
File[] list = file.listFiles();
if (list == null || list.length == 0) {// 如果是空目录或空文件,则结束
return ;
}
for (int i = 0; i < list.length; i++) {
if (list[i].isDirectory()) {/*查看是否是目录*/
String dirname = list[i].getAbsolutePath();//获得绝对路径
System.out.println("目录:" + dirname);//输出目录绝对路径
/*记录目录个数*/
mlcount++;
getCount(dirname);//继续统计
}
if (list[i].isFile()) {
/*累加文件长度*/
length += list[i].length();
System.out.println("文件: " + list[i].getAbsolutePath());//输出文件绝对路径
/*记录文件个数*/
filecount++;
}
}
return ;
}
}