---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! -----------------------
一.File类
作用:
用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作
File对象可以作为参数传递给流的构造函数
二.File类中常见的方法
常用构造方法:
File (String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File (String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
了解File类中的常用方法
1.创建文件或者文件夹
boolean createNewFile():在指定位置创建文件,如果该文件存在,文件创建失败
它与输出流不一样,如果文件已经有了,就会覆盖
boolean mkdir:创建下一级目录文件夹
boolean mkdirs:创建下一级多级目录文件夹
2.删除
boolean delete();删除失败返回false
void deleteOnExit();当程序推出时,删除指定文件
3.判断
boolean canExecute():文件是否可执行,可true 不可false
boolean exists():文件是否存在,定义了还没创建,还是不存在
boolean isFile():是否是文件
boolean isDirectory():是否是文件夹
boolean isHidden():是否是隐藏
boolean isAbsolute():是否是绝对路径(不考虑封装的内容是否存在)
4.获取信息
String getName();
String getPath():获取相对路径
String getAbsolutePath()::获取绝对路径
File getAbsoluteFile():获取绝对路径,并封装成了对象
long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
long length() 返回由此抽象路径名表示的文件的长度。
String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null
5.修改
boolean renameTo(File dest) :重新命名此抽象路径名表示的文件。【类似于剪切功能】
【static Stringseparator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。】
三.文件过滤
File对象的list方法中接受一个过滤器FilenameFileter的子类对象,复写子类对象中的唯一方法accept(File f,String str),该方法中需要接受一个File文件夹对象。并完成对文件的过滤。
代码示例
public static void fileNameFilterDemo()
{
Filef = new File("F:\\新建文件夹");
String[] arr = f.list(new FilenameFilter()
{
public boolean accept(File f,String str)
//【file是路径,str是该路径中所有的文件】
{
return str.endsWith(".txt");
}
});
for(String s : arr )
{
sop(s);
}
类似的方法:
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[ ] listFiles(FilenameFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
static File[] listRoots()
列出可用的文件系统根。
四.使用递归列出指定目录下的所有文件
递归:就是自己调用自己
用递归列出所有文件的主要执行代码为showDir方法块中。该方法获取一个目录文件对象,然后再用listFiles方法获得该文件夹下所有文件对象,通过for循环逐一对文件对象进行遍历,如果该文件对象是文件,则打印出文件名,如果是文件夹对象,则返回调用showDir。实现逐级查找。
递归要注意:
1.限定条件
2.要注意递归的次数,可能导致内存溢出
代码示例:
public static String getLevel(int lev){
StringBuildersb = new StringBuilder();
sb.append("|--");
for(intx = 0;x<lev;x++){
sb.insert(0," ");
}
returnsb.toString();
}
publicstatic void showDir(File dir,int lev){
sop(getLevel(lev)+dir);
lev++;
File[]file = dir.listFiles();//获得该目录下所有的文件对象
for(Filef : file) {
if(f.isFile())//如果是文件则打印
sop(getLevel(lev)+f);
else{
showDir(f,lev);//如果是文件夹,则递归
}
}
}
--------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com