前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Java_18】文件流

【Java_18】文件流

作者头像
用户8250147
发布2021-02-04 10:07:36
发布2021-02-04 10:07:36
58100
代码可运行
举报
文章被收录于专栏:黑马黑马
运行总次数:0
代码可运行

一、File 类

1. 构造方法
代码语言:javascript
代码运行次数:0
运行
复制
* public File(String pathname)
    通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。  
* public File(String parent, String child) 
    从父路径名字符串和子路径名字符串创建新的 File实例。
* public File(File parent, String child) 
    从父抽象路径名和子路径名字符串创建新的 File实例。 
2. 常用方法
代码语言:javascript
代码运行次数:0
运行
复制
* String getAbsolutePath()
    返回此File的绝对路径名字符串。
* String getPath()
    将此File转换为路径名字符串。 
* String getName() 
    返回由此File表示的文件或目录的名称。  
* long length()
    返回由此File表示的文件的长度。
* long lastModified() 
      返回此抽象路径名表示的文件最后一次被修改的时间。 
* boolean exists() 
    此File表示的文件或目录是否实际存在。
* boolean isDirectory() 
    此File表示的是否为目录。
* boolean isFile()
    此File表示的是否为文件
* boolean createNewFile()
    当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 
* boolean delete()
    删除由此File表示的文件或目录。  
* boolean mkdir()
    创建由此File表示的目录。
* boolean mkdirs()
    创建由此File表示的目录,包括任何必需但不存在的父目录。
* String[] list()
    返回一个String数组,表示该File目录中的所有子文件或目录。
* File[] listFiles() 
    返回一个File数组,表示该File目录中的所有的子文件或目录。
3. 绝对路径和相对路径
代码语言:javascript
代码运行次数:0
运行
复制
① 绝对路径
    * 从根目录开始的路径
② 相对路径
    * 以当前文件夹为基准的路径

二、示例

1. 遍历文件夹
代码语言:javascript
代码运行次数:0
运行
复制
import java.io.File;

public class DemoRecursion {
    public static void main(String[] args) {
        //创建文件对象
        //File.separator是文件名称分隔符 windows是 \ Linux 是 /
        File file = new File("E:\\");
 
        recurstion(file);
    }
    public static void recurstion(File file) {
        //合法性判断
        if (file == null) {
            return;
        }
 
        //获取文件夹下所有的子文件或者文件夹
        File[] files = file.listFiles();
        
        //可能因为权限等问题无法获取文件夹内的文件
        if (files == null) {
            return;
        }
 
        //遍历文件数组
        for (File file1 : files) {
            if (file1.isDirectory()) {
                //是文件夹则打印文件夹路径并递归
                System.out.println(file1.getPath());
                recurstion(file1);
            } else {
                //否则打印文件路径加文件长度
                System.out.println(file1.getPath() + "\t大小是:" + ((float)file1.length() / 1024 / 1024) + "M");
            }
        }
    }
}
2. 递归创建文件夹(目录)
代码语言:javascript
代码运行次数:0
运行
复制
import java.io.File;

public class DemoCreateFile {
    public static void main(String[] args) {
        //指定文件路径
        File file = new File("D:\\WorkSpace");
        //传递一个递归结束条件
        int i = 0;
        //调用方法
        recursion(file,i);
    }
 
    public static void recursion(File file,int i) {
        //递归结束条件
        if (i > 100) return ; 
        
        //指定创建的文件夹
        File f = new File(file,"new");
 
        //创建文件夹
        f.mkdirs();
 
        //递归调用
        recursion(f,i);
    }
}
3. 递归删除
代码语言:javascript
代码运行次数:0
运行
复制
import java.io.File;

public class DemoDeleteFile {
    public static void main(String[] args) {
        //指定路径
        File file = new File("D:\\WorkSpace\\new");
 
        delete(file);
    }
 
    private static void delete(File file) {
        //判断是否存在
        if (file.exists()) {
            //判断是否是文件夹
            if (file.isDirectory()) {
                //获取文件夹内所有的文件和文件夹
                File[] files = file.listFiles();
                if (files.length > 0) {
                    //若数组长度大于0则该文件夹内有内容
                    for (File file1 : files) {
                        //遍历数组,递归文件夹
                        delete(file1);
                    }
                }
                //删除文件夹
                file.delete();
            } else {
                //不是文件夹则直接删除文件
                file.delete();
            }
        }
 
    }
}
4. 查找文件
代码语言:javascript
代码运行次数:0
运行
复制
import java.io.File;
import java.util.Scanner;

public class DemoRecursion {
    //设置查找文件状态。默认未找到
    static boolean b = false;
    
    public static void main(String[] args) {
        //创建文件对象
        File file = new File("E:\\");
 
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的文件");
        String s = sc.next();
 
        recurstion(file,s);
        
        if (!b) {
            System.out.println("没有找到文件");
        }
    }
    public static void recurstion(File file,String s) {
        //合法性判断
        if (file == null) {
            return;
        }
 
        //获取文件夹下所有的子文件或者文件夹
        File[] files = file.listFiles();
 
        //可能因为权限等问题无法获取文件夹内的文件
        if (files == null) {
            return;
        }
 
        //遍历文件数组
        for (File file1 : files) {
            if (file1.isDirectory()) {
                //是文件夹则递归
                recurstion(file1,s);
            } else {
                //判断文件名是否包含要查找的字符串
                if (file1.getName().contains(s)){
                    //设置为找到文件
                    b = true;
                    System.out.println(file1.getPath());
                }
            }
        }
    }
}
5. 查找文件优化
代码语言:javascript
代码运行次数:0
运行
复制
import java.io.File;
import java.io.FileFilter;
import java.util.Scanner;

public class DemoRecursion {
    static boolean b = false;
    public static void main(String[] args) {
        //创建文件对象
        File file = new File("E:\\");
 
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的文件");
        String s = sc.next();
 
        recurstion(file,s);
        
        if (!b) {
            System.out.println("没有找到文件");
        }
    }
    
    public static void recurstion(File file,String s) {
        //合法性判断
        if (file == null) {
            return;
        }
 
        //使用过滤器获取文件夹下所有的子文件或者文件夹
        File[] files = file.listFiles(new FileFilter() {
 
            @Override
            public boolean accept(File pathname) {
                //判断是否为文件夹或者是包含查找字符串的文件名
                return file.isDirectory() || file.getName().contains(s);
            }
        });
        
        //遍历数组
        for (File file1 : files) {
            if (file1.isDirectory()) {
                //是文件夹则并递归
                recurstion(file1,s);
            } else {
                //设置找到了文件
                b = true;
                //打印文件路径
                System.out.println(file1.getPath());
            }
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、File 类
    • 1. 构造方法
    • 2. 常用方法
    • 3. 绝对路径和相对路径
  • 二、示例
    • 1. 遍历文件夹
    • 2. 递归创建文件夹(目录)
    • 3. 递归删除
    • 4. 查找文件
    • 5. 查找文件优化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档