黑马程序员_java文件系统

来源:互联网 发布:c语言基本算法 编辑:程序博客网 时间:2024/05/22 11:51

一、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);}}

0 0
原创粉丝点击