黑马程序员_java文件系统


一、File类
  1. java.io.file类用于表示文件或者目录,即我们可以通过File类操作硬盘上的文件或者目录;FIle类智能用于操作文件或目录的信息(大小、名称等),不能用于访问文件内容(目录);
  2. 常用API方法
    • File(String filename):指定文件名的构造器
    • long length():文件长度
    • String lastModified();
    • String getName();
    • String getPath();
    • boolean exists();
    • boolean dir.isFile();
    • boolean dir.isDirectory();
    • boolean mkdir();
    • File[] listFile();
创建File对象例子:
public class FileDemo { 
public static void main(String[] args) { 
 //创建File对象,此时不会在硬盘上创建以下文件或文件夹的 
 //可以将已有的或不存在的文件或文件夹封装成File对象 
 File f1 = new File("a.txt"); 
  
 //在c:\abc目录下创建1.txt文件 
 File f2 = new File("c:\\abc","1.txt"); 
  
 //c:\abc目录下创建1.txt文件 
 File d = new File("c:\\abc"); 
 File f3 = new File(d,"1.txt"); 

 System.out.println("f1:"+f1); 
 System.out.println("f2:"+f2); 
 System.out.println("f3:"+f3); 
} 
} 
4.常用方法实例
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class FileDemo {
public static void main(String[] args) throws Exception {
 File dir = new File(".");
 //1.显示当前路径
 System.out.println(dir.getCanonicalPath());
 
 //2.创建一个demo文件夹
 File demo = new File(dir,"demo");//创建了一个demo对象
 if(!demo.exists()){
  demo.mkdir();
 }
 
 //3.在demo文件夹下创建txt文件
 File test = new File(demo,"test1.txt");
 if(!test.exists()){
//在指定目录下创建文件,如果文件已经存在,则不创建,返回false;
//和输出流不一样,输出流一建立就会创建对象。如果已存在,则会覆盖。
  test.createNewFile();//touch
 }
 
 //4.查看目录内容
 File[] fileList = demo.listFiles();
 System.out.println(Arrays.toString(fileList));
 
 //5.显示test的绝对路径名、相对路径名
 System.out.println(test.getAbsolutePath());//绝对
 System.out.println(test.getCanonicalPath());//相对路径
 
 //6.文件长度、上次修改时间
 System.out.println(test.length());
 //日期格式转换
 Date d = new Date(test.lastModified());
 SimpleDateFormat  df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String time = df.format(d);
 System.out.println(time);
 test.delete();
 demo.delete();
}
}
输出结果
D:\servyou\20150304
[.\demo\test1.txt]
D:\servyou\20150304\.\demo\test1.txt
D:\servyou\20150304\demo\test1.txt
0
2015-03-12 14:57:46
二、过滤器
1.String[] list()方法:返回字符串数组,返回指定路径下的所有文件和文件夹;
例子:
public class FilterDemo {
public static void main(String[] args) {
 //创建一个文件对象
 File f = new File("c:\\");
 //将指定目录下的文件或者文件夹的名称存储到字符串数组中,包含隐藏文件。
 String[] names = f.list();
 System.out.println(names);
 System.out.println("C盘目录下的所有文件和文件夹是:");
 for(String name:names){
  System.out.println(“”name);
 }
}
}
输出结果:
C盘目录下的所有文件和文件夹是:
[Ljava.lang.String;@4f1d0d
01create_data_lib.pdc
1
1.xml
1.xml.bak
Program Files
等等不再列出
2.上述例子中包含c盘下的隐藏文件,那么如何过滤出这些隐藏文件,并把它们输出出来呢?
public class FilterDemo {
public static void main(String[] args) {
 //创建文件对象
 File f = new File("c:\\");
 File[] files = f.listFiles(new FilterByHidden());
 for(File file1 : files){
        System.out.println(file1);
    }
}
}
class FilterByHidden implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        return pathname.isHidden();
    }
}

过滤器的原理:

1,首先获取到该目录所有内容,用list()

2. 对这些内容进行遍历在遍历中加入条件。条件:accept(pathname);

3. 凡是符合条件,accept 方法返回true,就将这些符合条件的进行存储

4. 将存储的内容返回,这样就得到了过滤后的内容

关于过滤器再举几个例子:

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class FilterDemo {
public static void main(String[] args) {
 //创建文件对象
 File f = new File("c:\\");
 //示例1:找出C盘下隐藏的文件或文件夹
 File[] files1 = f.listFiles(new FilterByHidden());
 // 示例2:找出C盘下拓展名为.xml的文件或文件夹
 File[] files2 = f.listFiles(new FilterByJava());
 // 示例3:找出C盘下拓展名为.xml的文件或文件夹
 File[] files3 = f.listFiles(new FilterBySuffix(".txt"));
 for(File file1 : files1){
        System.out.println(file1);
    }
 for(File file1 : files2){
        System.out.println(file1);
    }
 for(File file1 : files3){
        System.out.println(file1);
    }
}
}
//查找隐藏文件/文件夹的过滤器
class FilterByHidden implements FileFilter {
   
    @Override
    public boolean accept(File pathname) {
        return pathname.isHidden();
    }
}
//查找.java文件的过滤器
class FilterByJava implements FilenameFilter{
 @Override
    public boolean accept(File dir , String name){
    return name.endsWith(".xml");
}
}
//查找任意拓展名的过滤器
class FilterBySuffix implements FilenameFilter{
    private String suffix;
 
    public FilterBySuffix(String suffix){
        super();
        this.suffix = suffix;
}
@Override
    public boolean accept(File dir , String name){
    return name.endsWith(suffix);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值