zoukankan      html  css  js  c++  java
  • Java:File类

    File类的概述

    • 文件和目录路径名的抽象表示形式
    • 表示的文件/目录不一定存在

    构造方法

    • File(File parent, String child)
      从父抽象路径名和子路径名字符串创建新的 File实例
    • File(String pathname)
      通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
    • File(String parent, String child)
      从父路径名字符串和子路径名字符串创建新的 File实例
    • File(URI uri)
      通过将给定的 file: URI转换为抽象路径名来创建新的 File实例
    File file = new File("D:/file/newfile");
    File file = new File("D:/file","newfile");
    File fileParent = new File("D:/file");  File file = new File(fileParent,"newfile");
    //以上三种定义的file指向同样的路径
    

    私以为这个类是英语影响Java学习速度的典型代表

    创建
    public boolean createNewFile()//创建文件 文件已存在就不会被创建 父级目录必须存在
    public boolean mkdir()//创建目录  目录已存在就不会被创建 父级目录必须存在
    public boolean mkdirs()//创建目录 父级目录不存在则创建
    
    删除
    public boolean delete()//删除文件/目录   目录必须为空
    移动&重命名
    //可改变文件路径及名称
    public boolean renameTo(File dest)//将文件移动到目标路径,更改为目标名称

    判断功能

    public boolean isDirectory()//是否为目录
    public boolean isFile()//是否为文件
    public boolean exists()//是否可执行
    public boolean canRead()//是否可读
    public boolean canWrite()//是否可写
    public boolean isHidden()//是否可见

    基本获取功能

    public String getAbsolutePath()//得到绝对路径
    public String getPath()//得到对象中存储的路径
    public String getName()//返回文件(目录)名
    public long length()//返回文件字节数
    public long lastModified()//返回此抽象路径名表示的文件上次修改的时间(毫秒值)  配合new Date()使用
    
    public String[] list()//返回目录下的文件和目录的名称数组  若该File指向一个文件则返回null
    public File[] listFiles()//返回目录下的文件和目录的File数组  若该File指向一个文件则返回null
    
    
    public String[] list(FilenameFilter filter)
    public File[] listFiles(FilenameFilter filter)
    
    
    FilenameFilter接口      用于筛选获取目录下的一部分文件
    
    //示例
    
    //FilenameFilter
    String [] files = file.list(new FilenameFilter(){
        @override
        public boolean accpet(File dir , String name){//dir为调用者file,name为文件名
            return name.endsWith(.txt);
            //return new File(dir,name).isFile && name.endsWith(.txt);确保是文件
        }
    });//返回file目录下的TXT文件名称数组
    
    
    private File [] getFiles(File file){
            File [] files = null;
            if(file.isFile())return files;
            if(file.isDirectory()){
                files = file.listFiles((File dir, String name)->new File(dir,name).isDirectory()&&name.endsWith(".jpg"));
            }
            return files;
        }//返回目录file下以.jpg为结尾的文件夹File数组
    
    //FileFilter    仅listFiles可用
    
    private File [] gotFiles(File file){
            File [] files = null;
            if(file.isFile())return files;
            if(file.isDirectory()){
                files = file.listFiles((pathname)->pathname.isDirectory()&&pathname.getName().endsWith(".jpg"));//pathname为指向file目录下文件的File类型变量
            }
            return files;
        }//返回目录file下以.jpg为结尾的文件夹File数组

    简单应用:递归删除文件/目录下的所有文件

    import java.io.File;
    
    public class Main {
    
        private static void delete(File file){
            File [] files;
            if(file.isFile()){
                if(file.delete())
                    System.out.println(file.getAbsolutePath());
            }else if(file.isDirectory()){
                files = file.listFiles();
                for(File f : files){
                    delete(f);
                }
                if(file.delete())
                    System.out.println(file.getAbsolutePath());
            }
        }
    
        public static void main(String[] args) {
                delete(new File("D:\tem"));//文件/目录名
        }
    }

    2018/8/4

  • 相关阅读:
    leetcode 1301. 最大得分的路径数目
    LeetCode 1306 跳跃游戏 III Jump Game III
    LeetCode 1302. 层数最深叶子节点的和 Deepest Leaves Sum
    LeetCode 1300. 转变数组后最接近目标值的数组和 Sum of Mutated Array Closest to Target
    LeetCode 1299. 将每个元素替换为右侧最大元素 Replace Elements with Greatest Element on Right Side
    acwing 239. 奇偶游戏 并查集
    acwing 238. 银河英雄传说 并查集
    acwing 237程序自动分析 并查集
    算法问题实战策略 MATCHORDER 贪心
    Linux 安装Redis全过程日志
  • 原文地址:https://www.cnblogs.com/kafm/p/12721851.html
Copyright © 2011-2022 走看看