zoukankan      html  css  js  c++  java
  • IO流(File类:构造方法、常用方法、递归获取文件、文件过滤)

     java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流。

    File类的构造方法:

    1、File类创建对象:

    利用前三个构造方法创建File类对象:

    import java.io.File;
    
    public class FileDemo {
        public static void main(String[] args) {
            String path1 = "E:\IO流\java1";// 第一个参数为对象,第二个为路径
            File f1 = new File(path1);
            File f11 = new File(f1, "001.txt");
            System.out.println(f11);
    
            String path2 = "E:\IO流\java2";// 要写两个斜线,第一条把第二条转义
            File f2 = new File(path2);
            System.out.println(f2);
    
            String path3 = "E:\IO流\java3";
            String path4 = "002.txt";
            File f3 = new File(path3, path4);// 将一个路径分为两部分,灵活性增强
            System.out.println(f3);
        }
    }

    2、File类的常用方法:

    (1)返回路径名、文件名和文件大小

    package pers.pers.file;
    
    import java.io.File;
    
    public class FileDemo {
    public static void main(String[] args) {
        String path = "E:\IO流\java\0、实验\实验二\汇编语言标志位(CF)及一些常用指令.pdf";// 第一个参数为对象,第二个为路径
        File f1 = new File(path);//创建File类的对象
        String absPath=f1.getAbsolutePath();//返回绝对路径(即一个文件的全部路径)
        System.out.println(absPath);
        
        String name=f1.getName();//返回此路径下的文件或目录名称
        System.out.println(name);
        
        String stringname=f1.getPath();//将抽象路径名转换为字符串
        System.out.println(stringname);
    
        long size=f1.length();
        System.out.println(size);//获取文件大小(字节),不能获取文件夹的大小
    }
    }

     (2)创建文件:

    package pers.pers.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreatFile {
        public static void main(String[] args) throws IOException {
            File file = new File("E:\IO流\java\IO.txt");
            System.out.println(file.createNewFile());
        }
    }

    程序运行后,在java文件夹下出现IO.txt文件。

    (3)删除路径下的文件或目录:

    package pers.pers.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreatFile {
        public static void main(String[] args) throws IOException {
            File file = new File("E:\IO流\java\IO.txt");
            System.out.println(file.delete());
        }
    }

    程序运行后java目录下的IO.txt文件消失。

    (4)路径下的文件或目录是否存在

    package pers.pers.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreatFile {
        public static void main(String[] args) throws IOException {
            File file = new File("E:\IO流\java");
            System.out.println(file.exists());
        }
    }

    (5)测试路径下的文件是否为目录:

    package pers.pers.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreatFile {
        public static void main(String[] args) throws IOException {
            File file = new File("E:\IO流\java");
            System.out.println(file.isDirectory());
        }
    }

    (6)测试路径下的文件是否是一个标准文件(文件可以,文件夹不行):

    package pers.pers.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreatFile {
        public static void main(String[] args) throws IOException {
            File file = new File("E:\IO流\java\1.txt");
            System.out.println(file.isFile());
        }
    }

    (7)创建目录:

    package pers.pers.file;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreatFile {
        public static void main(String[] args) throws IOException {
            File file = new File("E:\IO流\java\2.txt");
            System.out.println(file.mkdir());
        }
    }

    3、获取路径下的文件:

    package pers.pers.file;
    
    import java.io.File;
    
    public class FileDemo1 {
        public static void main(String[] args) {
            File dir = new File("E:\IO流\java");
            //返回字符串数组,获取的是目录下的当前的文件以及文件夹的名称。
            String[] names = dir.list();
            for(String name : names){
                System.out.println(name);
            }
            //获取目录下当前文件以及文件对象
            File[] files = dir.listFiles();
            for(File file : files){
                System.out.println(file);
            }
        }
    }

    4、IO流递归输出文件

    package pers.zbb.File;
    
    import java.io.File;
    
    public class FileDemo {
        public static void main(String[] args) {
            File file = new File("E:\IO流");
            getFileAll(file);
        }
    
        public static void getFileAll(File file) {
            File[] files = file.listFiles();
    
            for (File f : files) {
    
                if (f.isDirectory()) {
    
                    getFileAll(f);
                } else {
    
                    System.out.println(f);
                }
            }
        }
    }

    在输出路径下的文件过程中,递归调用了getFileAll方法,即自己调用自己,如果在遍历路径的时候是文件夹,则会再次调用getFileAll方法,遍历文件夹下的文件路径,输出不是文件夹的文件。

    5、文件过滤器:

    (1)常用方法:

    实现过滤器功能需要先实现FilenameFilter接口:

    package pers.zbb.Filter;
    
    import java.io.File;
    import java.io.FilenameFilter;
    
    public class FilterDemo implements FilenameFilter {
    
        public boolean accept(File dir, String name) {
    
            return name.endsWith(".txt");
        }
    
    }

    创建测试类,调用listfile方法:

    package pers.zbb.Filter;
    
    import java.io.File;
    
    public class Test {
    public static void main(String[] args) {
        File file=new File("E:\IO流\java");
        File[] files = file.listFiles(new FilterDemo());
        for (File f : files) 
            System.out.println(f);
    
    }
    }

     (2)抽象路径名的过滤

    FileFilter类:

    输出文件:

    package pers.zhb;
    
    import java.io.File;
    import java.io.FileFilter;
    
    public class FileFilterDemo implements FileFilter{
    
        public boolean accept(File pathname) {
    
        return pathname.isFile();
        }
    
    }

  • 相关阅读:
    3
    2
    1
    11
    12
    8888888888
    99999999999
    88888888888
    77777777
    10.23
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11364864.html
Copyright © 2011-2022 走看看