File类
用来将文件或者文件夹封装成对象
方便对文件与文件进行操作
File对象可以作为参数传递给流的构造函数
File类的常见方法:
1.创建
boolean createNewFile():在指定位置创建文件,如果该文件已存在,则不创建 ,返回false;和输出流不一样,输出流对象一建立创建文件,而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹;
boolean mkdirs():创建多级文件夹;
2.删除
boolean delete();删除失败返回false,如果文件正在被使用,则删除不了返回 false.
void deleteOnExit():在程序退出时删除指定文件。
3.判断
boolean exists():文件是否存在,
idFile():是否是文件,记住在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在,
isDirectory():是否是目录
isHidden():是否为隐藏文件
isAbsolute():是否为绝对路径
4.获取信息
getName()获取名字
getPath()获取路径
getParent();该方法返回的是绝对路径中的父目录,如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果
getAbsolutePath()获取绝对路径
long lastModified()返回最后一次修改文件的时间
long length()
renameTo():修改文件名(复制+剪切)
separator()分隔符,跨平台的。
文件列表:
File[] files=File.listRoots()返回电脑是的盘符。
File f=new File("c:\\");
String[] names=f.list();返回目录里的文件,包括隐藏的;调用list方法的file对象必须是封装了一个目录,而且该目录还必须存在。否则返回空指针异常。
listFiles()和list的功能基本一样,不同是listFiles()返回目录里的文件,还返回对象。
/*
过滤文件,只留.txt的
String[] arr=dir.list(FilenameFilter filter) 返回一个字符串数组,过滤指定文件 和目录,FilenameFilter是接口类型,里面只有一个方法,所以可以用匿名内部类来传递变量。
*/
import java.io.*;
class Demo
{
public static void main(String[] args)throws Exception
{
File dir=new File("d:\\JAVA\\lianxi");
String[] arr=dir.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".txt");
}
});
for(String s:arr)
{
System.out.println(s);
}
}
}
如果在列出过程中出现的还是目录的话,还可以再次调用本功能,也就是说函数自身调用自身,这种表现形式,或者编程手法,称为递归。
递归要注意:
1.需要有限定条件。
2.要注意递归的次数,尽量避免内存的溢出
/*
删除文件,原理:从目录的里面往外删
*/
import java.io.*;
class Demo
{
public static void main(String[] args)throws Exception
{
File dir=new File("d:\\JAVA\\pack");
removeDir(dir);
}
public static void removeDir(File dir)
{
File[] arr=dir.listFiles();
for(int x=0;x<arr.length;x++)
{
if(arr[x].isDirectory())
removeDir(arr[x]);
arr[x].delete();
}
dir.delete();
}
} |
|