File类中常用的方法,查询文件即文件夹的实例,IO流的使用

1.什么是IO流?

(1)IO流:I(Input)O(Output)指输入输出流

(2)IO流是用于操作磁盘上的文件

(3)通过IO流可以读取磁盘上的文件到程序,也可以将程序中的数据写入到磁盘的文件上

2.文件

(1)Java中的File类表示磁盘中的文件,该类在java.io包下

(2)File类的一个实例(对象),即表示磁盘中的具体文件(abc.txt),又表示磁盘中的文件夹(目录)

(3)通过File类就可以直接操作磁盘中的文件,但不能操作磁盘中文件的内容

(4)通过File类可以在磁盘中创建文件或文件夹,获得文件文件名及大小等相关属性

3.如何使用File类

​ 创建File类对象
​ File file = new File(“文件路径(当前file对象所表示的文件)”);

4.File类中常用的方法:

(1) file.exists():检测文件是否存在
public class FileDemo1 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建File类的一个对象(file对象表示d盘下的abc.txt)
        File file = new File("d:/abc.txt");
        //检测file对象表示的文件是否存在
        if(file.exists()){
    
    //检测文件是否存在,如果存在返回true、否则返回false
            System.out.println("文件存在!");
            //获得文件名
            String fileName = file.getName();
            System.out.println("文件名:"+fileName);
        }else{
    
    
            System.out.println("未找到文件!");
            //创建文件
            file.createNewFile();
            System.out.println("文件创建成功!");

        }
    }
}

(2) file.createNewFile():创建一个文件
public class FileDemo2 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建文件对象
        File file = new File("d:/abc.txt");
        if(file.exists()){
    
    
            //删除文件
            file.delete();
            System.out.println("文件删除成功!");
        }else{
    
    
            file.createNewFile();
            System.out.println("文件创建成功!");
        }
    }
}

(3) file.getName():获得文件名
(4) file.delete():删除文件
(5) file.getAbsolutePath():获得文件的绝对路径
(6) 获得该文件的扩展名

​ String fileName = file.getName();
​ //根据文件名获得该文件的扩展名
​ String extName = fileName.substring(fileName.lastIndexOf(“.”)+1);
​ System.out.println(“扩展名为:”+extName);

(7) 获得最后修改时间,以字符串的格式显示时间

​ //获得文件的最后修改时间
​ long lastTime = file.lastModified();
​ //使用得到的毫秒数创建Date对象
​ Date date = new Date(lastTime);
​ //将日期进行格式化
​ String lastModifierTime = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).format(date);
​ System.out.println(lastModifierTime);

(8) 以MB为单位获得文件的大小

​ //获得文件的大小(字节为单位)
​ long fileSize = file.length();
​ //将以字节为单位的文件转换以MB为单位
​ double size = fileSize/1024.0/1024;
​ System.out.println(fileName+“文件的大小为:”+size+“MB”);

扫描二维码关注公众号,回复: 14858805 查看本文章
public class FileDemo3 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建文件对象
        File file = new File("D:/SoftWare/dev-install/apache-maven-3.6.2-bin.zip");
        if (file.exists()) {
    
    
            //获得文件的绝对路径
            String path = file.getAbsolutePath();
            System.out.println("文件的路径为:" + path);
            //获得文件的扩展名
            String fileName = file.getName();
            //根据文件名获得该文件的扩展名
            String extName = fileName.substring(fileName.lastIndexOf(".") + 1);
            System.out.println("扩展名为:" + extName);
            //获得文件的最后修改时间
            long lastTime = file.lastModified();
            //使用得到的毫秒数创建Date对象
            Date date = new Date(lastTime);
            //将日期进行格式化
            String lastModifierTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
            System.out.println(lastModifierTime);
            //获得文件的大小(字节为单位)
            long fileSize = file.length();
            //将以字节为单位的文件转换以MB为单位
            double size = fileSize/1024.0/1024;
            System.out.println(fileName+"文件的大小为:"+size+"MB");
        } else {
    
    
            file.createNewFile();
            System.out.println("文件创建成功!");
        }
    }
}
(9) file.mkdir():创建一级文件夹
(10) file.mkdirs():创建多级文件夹(多级目录)
public class FileDemo4 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建一个文件对象
        File file = new File("d:/abc/xyz");
        if(file.exists()){
    
    
            String fileName = file.getName();
            System.out.println("文件名:"+fileName);
        }else{
    
    
            System.out.println("文件不存在,文件创建中...");
            //file.createNewFile();//用于创建文件,不能创建目录
            //file.mkdir();//创建单个文件夹
            file.mkdirs();//用于创建多级文件夹
            System.out.println("文件创建成功!");
        }
    }
}
(11) file.isFile():判断是否为文件,返回true表示文件,否则表示不是文件
(12) file.isDirectory():判断是否为文件夹(目录),返回true表示目录,否则表示不是目录
public class FileDemo5 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建一个文件对象
        File file = new File("d:/abc.txt");
        //判断file是否为文件
        if(file.isFile()){
    
    
            System.out.println(file.getName()+":是文件");
        }
        //检测是否为目录(文件夹)
        if(file.isDirectory()){
    
    
            System.out.println(file.getName()+":是文件夹");
        }

    }
}
(13) file.list():获得文件夹中所有子文件的文件名,返回字符串数组(例如1.txt)
(14) file.listFiles():获得文件夹中所有的子文件,返回File数组(例如c:/1.text)
public class FileDemo6 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //创建一个文件对象
        File file = new File("E:\\JavaWeb开发");
        if(file.isDirectory()){
    
    
            //获得文件夹中所有子文件的文件名
           /* String[] fileNames = file.list();
            for(String fileName : fileNames){
                System.out.println(fileName);
            }*/
           //获得文件夹中所有的子文件
           File[] files = file.listFiles();
           for(File subFile : files){
    
    
               System.out.println(subFile.getName()+":"+(subFile.isFile()?"是文件":subFile.isDirectory()?"是文件夹":"什么都不是"));

           }
        }


    }
}

案例一:扫描所有文件

public class ScannerFile {
    
    
    public static void main(String[] args) {
    
    
        /*File file = new File("E:\\JavaWeb开发");
        scannerFile(file);*/
        //获得磁盘中所有的盘符(根路径)
        File[] roots = File.listRoots();
        for(File root : roots){
    
    
            scannerFile(root);
        }
    }
    /**
     * 文件扫描方法,在该方法中通过"递归"调用的方式将目录中的所有文件扫描一遍
     * 递归算法的核心:
     *  1.在方法内部调用本方法自身
     *  2.在方法内部必须有退出,让递归停止
     * @param file
     */
    public static void scannerFile(File file){
    
    
        if(file==null){
    
    
            return;//传入的参数为null,当前文件的递归调用停止,退出方法
        }
        //判断file是文件还是目录
        if(file.isFile()){
    
    //是文件
            //输出文件的完整路径(绝对路径)
            String filePath = file.getAbsolutePath();
            System.out.println(filePath);
            return;//当前文件的递归调用停止,退出方法
        }
        //判断file是否为目录
        if(file.isDirectory()){
    
    
            //如果是目录(文件夹),获得目录中的所有子文件
            File[] subFiles = file.listFiles();
            //判断是否存在子文件
            if(subFiles!=null && subFiles.length!=0){
    
    
                //遍历子文件
                for(File subFile : subFiles){
    
    
                    //递归调用(调用本方法)
                    scannerFile(subFile);

                }
            }

        }
    }
}

案例二:查找文件名

public class ScannerFileForSearch {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        System.out.print("请输入要查找的文件名:");
        String fileName = input.next();
        File file = new File("E:\\JavaWeb开发");
        scannerFile(file,fileName);
    }
    /**
     * 文件扫描方法,在该方法中通过"递归"调用的方式将目录中的所有文件扫描一遍
     * 递归算法的核心:
     *  1.在方法内部调用本方法自身
     *  2.在方法内部必须有退出,让递归停止
     * @param file
     */
    public static void scannerFile(File file,String fileName){
    
    
        if(file==null){
    
    
            return;//传入的参数为null,当前文件的递归调用停止,退出方法
        }
        //判断file是文件还是目录
        if(file.isFile()){
    
    //是文件
            //if(file.getName().equals(fileName)){//使用文件名精确查找
            if(file.getName().toLowerCase().contains(fileName.toLowerCase())){
    
    
                //输出文件的完整路径(绝对路径)
                String filePath = file.getAbsolutePath();
                System.out.println(filePath);
            }

            return;//当前文件的递归调用停止,退出方法
        }
        //判断file是否为目录
        if(file.isDirectory()){
    
    
            //如果是目录(文件夹),获得目录中的所有子文件
            File[] subFiles = file.listFiles();
            //判断是否存在子文件
            if(subFiles!=null && subFiles.length!=0){
    
    
                //遍历子文件
                for(File subFile : subFiles){
    
    
                    //递归调用(调用本方法)
                    scannerFile(subFile,fileName);

                }
            }

        }
    }
}

案例三:查找扩展名

public class ScannerFileForSearch1 {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        System.out.print("请输入要查找的扩展名:");
        String fileName = input.next();
        File file = new File("E:\\JavaWeb开发");
        scannerFile(file,fileName);
    }
    /**
     * 文件扫描方法,在该方法中通过"递归"调用的方式将目录中的所有文件扫描一遍
     * 递归算法的核心:
     *  1.在方法内部调用本方法自身
     *  2.在方法内部必须有退出,让递归停止
     * @param file
     */
    public static void scannerFile(File file,String fileName){
    
    
        if(file==null){
    
    
            return;//传入的参数为null,当前文件的递归调用停止,退出方法
        }
        //判断file是文件还是目录
        if(file.isFile()){
    
    //是文件
            //if(file.getName().equals(fileName)){//使用文件名精确查找
            
            String fileNames = file.getName();
            String extName = fileNames.substring(fileNames.lastIndexOf(".")+1);//区别所在
            
            if(extName.toLowerCase().contains(fileName.toLowerCase())){
    
    
                //输出文件的完整路径(绝对路径)
                String filePath = file.getAbsolutePath();
                System.out.println(filePath);
            }

            return;//当前文件的递归调用停止,退出方法
        }
        //判断file是否为目录
        if(file.isDirectory()){
    
    
            //如果是目录(文件夹),获得目录中的所有子文件
            File[] subFiles = file.listFiles();
            //判断是否存在子文件
            if(subFiles!=null && subFiles.length!=0){
    
    
                //遍历子文件
                for(File subFile : subFiles){
    
    
                    //递归调用(调用本方法)
                    scannerFile(subFile,fileName);
                
                }
            }

        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_52682014/article/details/127593442