代码改变世界

io流

2018-06-25 16:19  yelena  阅读(143)  评论(0编辑  收藏  举报

输入:从存储数据的设备中取出数据存向内存中

输出:从内存中把数据存储到设备中

File类:表示文件和目录

成员变量:

String s1 = File.pathSeparator;//输出一个分号;
                System.out.println(s1);
                //与系统有关的 名称 分隔符
                String s2 = File.separator;//输出一个反斜杠\
                System.out.println(s2);

构造方法:

//不会判定你写的这个文件是否存在
        //传字符串
        File f = new File("d:\\12\\123\\abc.java");
        System.out.println(f);
        //传两个字符串
        String parent = "d:\\12\\123";
        String child = "abc.java";
        File f2 = new File(parent,child);
        System.out.println(f2);
        //传一个file对象,一个字符串
        File p = new File("d:\\12\\123");
        String c = "abc.java";
        File f3 = new File(p,c);
        System.out.println(f3);

创建文件及目录和多个目录:

//创建文件
        File f = new File("d:\\12\\xxx.java");
        f.createNewFile();
        //创建文件夹
        File f1 = new File("d:\\12\\aaa");
        f1.mkdir();
        //创建多个文件夹
        File f2 = new File("d:\\12\\aaa\\bbb\\ccc");
        f2.mkdirs();

文件删除(目录中有文件的话,不能直接删除):

File f = new File("d:\\12\\xxx.java");
        f.delete();

获得文件名称,路径,大小:

File f = new File("d:\\ruanjian\\code2\\jdk1.8.0_161\\src.zip");
        //获取文件或文件夹的名称
        System.out.println(f.getName());
        //相当于toString方法,getParent()方法获得上一级目录的路径
        System.out.println(f.getPath());
        //获得文件或文件夹的大小,获得是文件的字节数KB
        System.out.println(f.length());

相对路径及绝对路径:

//相对路径,获得工程根路径+你的相对路径
        File f = new File("src");
        System.out.println(f.getAbsolutePath());

文件及目录是否存在,是否为文件或者目录:

//是否存在
        File f = new File("d:\\12\\aaa");
        System.out.println(f.exists());
        //是否是文件夹
        System.out.println(f.isDirectory());
        //文件对象是否是文件
        System.out.println(f.isFile());

listFiles()方法:获得指定目录(文件夹)中所有的文件和目录

指定的文件夹必须存在,必须是文件夹才行

 过滤器:要自定义一个过滤器类实现fileFilter类,并重写accept()方法

public class MyFilter implements FileFilter {

    @Override
    public boolean accept(File pathname) {
        // TODO Auto-generated method stub
        String name = pathname.getName();
        boolean flag = name.endsWith(".java");
        return flag;
    }
}
public static void main(String[] args) {
        File f = new File("d:\\12");
        getFile(f);
    }
    public static void getFile(File f){
        File[] file = f.listFiles(new MyFilter());
        for(File f1:file){
            System.out.println(f1);
        }
    }

 

递归:方法自己调用自己

递归一定要有出口,否则内存溢出;递归次数不能太多,否则内存溢出

 打印目录中所有的文件:

public static void getAllFile(File f){
        File[] file = f.listFiles();
        for(File f1:file){
            if(f1.isDirectory()){
                getAllFile(f1);
            }else{
            System.out.println(f1);
            }
        }
    }

查看目录下所有的java文件

public class MyFilter implements FileFilter{

    @Override
    public boolean accept(File pathname) {
        // TODO Auto-generated method stub
        if(pathname.isDirectory()){
            return true;
        }
        return pathname.getName().toLowerCase().endsWith(".java");
    }
}
public static void main(String[] args) {
        File file = new File("d:\\12");
        method(file);
    }
    public static void method(File file){
        File[] files = file.listFiles(new MyFilter());
        for(File f:files){
            if(f.isDirectory()){
                method(f);
            }else{
                System.out.println(f);
            }
        }
    }