File类:用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作
创建对象:
1. File f1 = new File(“a.txt”);//将a.txt封装成file对象,可以将已有的和未出现的文件或者文件夹封装成对象。
2. File f2 = new File(“C:\\abc”,”b.txt”);
3. File d = new File(“C:\\abc”);
File f3 = newFile(d,”b.txt”)
static String separator:目录分隔符
Filef = new File(“C:\\abc\\www\\asd\\aa.txt”);
File f = new File(“C:”+File.separator+”abc+File.separator+”asd”+File.separator +”aa.txt”);//可以跨平台,Linux下也能用
方法:
1. 创建:
boolean createNewFile():在指定的位置创建文件,荣国该文件已经存在,则不存在,返回false。和输出流不一样,输出流对象一建立就创建文件,而且文件已经存在,会覆盖。
static FilecreateTempFile(String prefix,String suffix):创建临时文件
prefix - 用于生成文件名的前缀字符串;必须至少是三字符长
suffix - 用于生成文件名的后缀字符串;可以为 null,在这种情况下,将使用后缀 ".tmp"
boolean mkdir():创建文件夹,只能创建一级目录
booleanmkdirs():可创建多级目录
2. 删除:
booleandelete();删除失败返回false
voiddeleteOnExit();程序退出时删除指定文件,在虚拟机终止时,请求删除此抽象路径名表示的文件或目录
3. 判断:
boolean exists():判断文件是否存在.
在判断文件对象是否是文件或者目录时,必须先判断该文件对象封装的内容是否存在
boolean isDirectory() :测试此抽象路径名表示的文件是否是一个目录。
boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件
boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件
boolean isAbsolute():判断是不是绝对路径
4. 获取信息:
String getName():获取文件名称
String getParent():获取获取符目录的路径名,该方法返回的是绝对路径中的父目录,如果获取的是相对路径,返回null;
String getPath():获取路径名转换为一个路径名字符串,String getAbsolutePath():获取绝对路径名
long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间
long length():返回由此抽象路径名表示的文件的长度
boolean renameTo():重新命名此抽象路径名表示的文件。类似剪切
static File[] listRoot(): 列出可用的文件系统根
publicstaticvoid demo()throws IOException
{
File f = new File("D:\\abc.txt");
booleanb = f.createNewFile();
//System.out.println(b);
//f.delete();
//System.out.println(f.exists());
//File dir = newFile("D:\\aaa\\kk");
//dir.mkdir();
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.isAbsolute());
File d= new File("a.java");
System.out.println(d.getName());
System.out.println(d.getPath());
System.out.println(d.getAbsolutePath());
System.out.println(d.getParent());
System.out.println(d.length());
File a = new File("D:\\bbb.txt");
File c = new File("D:\\ccc.txt");
System.out.println(a.renameTo(c));
File dirs = new File("D:");
File [] ff = dirs.listRoots();
for(File fr : ff)
{
System.out.println(fr);
}
System.out.println("----------------------");
String [] arr = dirs.list();
for(String fr1 : arr)
{
System.out.println(fr1);
}
}
String [] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录;调用list方法的file对象必须是封装了一个目录,该目录必须存在
String [] list(FilenameFilter filter):返回字符串数组,这些字符串指定此抽象路径名表示的目录中给定filter
能接受的文件和目录。如果目录为空,或者没有名称被过滤器接受,那么该数组将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回null
。
FilenameFilter
接口有一个方法boolean accept(File dir,String name):
测试指定文件是否应该包含在某一文件列表中。当且仅当该名称应该包含在文件列表中时返回true
;否则返回false
File[] listFiles():
返回当前文件夹下的文件,以及文件夹的对象,可以通过对象获取名称
publicstaticvoid demo1()
{
File dd = new File("D:\\JAVA\\java2");
String [] str = dd.list(new FilenameFilter()
{
publicboolean accept(File dir,String name)
{
return name.endsWith(".java");
}
});
for(String name : str)
{
System.out.println(name);
}
}
递归:函数自身调用自身
注意:限定条件,(死循环)
列出目录下的所有内容:
publicstaticvoid demo2(File filter)
{
System.out.println(filter+"-----------");
File [] frr = filter.listFiles();
for(File f : frr)
{
if(f.isDirectory())
{
demo2(f);//递归,函数自身调用自身
}
System.out.println(f);
}
}