• 【io】流及File对象的处理(二)


    IO的处理

    1. 【io】流及File对象的处理(一)

    2. 【io】流及File对象的处理(二)

    本文主要介绍File对象及其处理方法

    1. 概念和方法

    # 概念:代表物理盘符中的一个文件或者文件夹
    # 方法:
    (1)createNewFile()      # 创建一个新文件
    (2)mkdir()                # 创建一个新目录
    (3)delete()                # 删除文件或空目录
    (4)exists()                # 判断File对象所代表的对象是否存在
    (5)getAbsolutePath()    # 获取文件的绝对路径
    (6)getName()            # 取得文件的名字
    (7)getParent()            # 获取文件/目录所在的父目录
    (8)isDirectory()        # 是否是目录
    (9)isFile()                # 是否是文件
    (10)length()            # 获得文件的长度
    (11)listFiles()            # 列出目录中的所有内容
    (12)renameTo()            # 修改文件名为

    2. 文件操作

    2.1分隔符

    # 路径分隔符+名称分隔符

    例子:

    //分隔符
    public static void main(String[] args) throws Exception{
        separator();
    }
    
    public static void separator(){
        //路径分隔符,结果为一个分号 ;  (还记得配置环境变量中的path里都是用分号隔开的嘛)
        System.out.println(File.pathSeparator); 
        //名称分隔符 结果为一个斜线   (windows下电脑文件的目录)
        System.out.println(File.separator); 
    }
    View Code

    2.2 文件操作

    # 创建文件+删除文件+获取文件信息+判断

    例子:

    //文件操作
    public static void main(String[] args) throws Exception{
        //1. 创建文件
        File file = new File("d:\file.txt");
        //判断文件是否存在
        if(!file.exists()){
            //判断文件是否创建成功 如果文件没有返回true: 成功  如果文件已经存在返回false
            boolean b = file.createNewFile();
        }
        //2. 删除文件 删除成功true
        boolean result = file.delete();
        // 使用jvm退出时删除文件
        //file.deleteOnExit();
        //加5s延时是为了看到效果
        //Thread.sleep(5000);
        //3. 获取文件信息 绝对路径 getPath为相对路径,即上面写什么就是什么
        String url = file.getAbsolutePath();//结果为d:file.txt
        //获取名称
        String name = file.getName();//结果为:file.txt
        //获取父目录
        String parentsource = file.getParent();//结果为:d:
        //获取文件的长度  字节数
        long length = file.length();
        //获取文件的创建时间
        String data = new Date(file.lastModified()).toLocaleString();//结果为年月日时分秒的结构
        //4.判断
        //判断是否可写
        boolean iswrite = file.canWrite();
        //判断是否是文件
        boolean isFile = file.isFile();
        //判断是否是隐藏的
        boolean ishide = file.isHidden();
    }
    View Code

    2.3 文件夹操作

    # 创建+删除+获取信息+判断+遍历

    例子:

    //文件夹操作
    public static void main(String[] args) throws Exception{
        //1. 创建文件夹
        File dir = new File("d:\aa\bb\cc");
        //判断文件夹是否存在
        if(!dir.exists()){
            //创建文件夹  mkdir:创建单级目录 mkdirs:创建多级目录
            boolean b = dir.mkdirs();
        }
        //2. 删除文件夹 这个删除是只删除最底层的,比如上面的cc目录,并且要求里面是空的
        boolean result = dir.delete();
        // 使用jvm退出时删除文件夹
        //dir.deleteOnExit();
        //加5s延时是为了看到效果
        //Thread.sleep(5000);
        //3. 获取文件夹信息 绝对路径 getPath为相对路径,即上面写什么就是什么
        String url = dir.getAbsolutePath();//结果为d:aabcc
        // 获取名称
        String name = dir.getName();//结果为:cc
        //获取父目录
        String parentsource = dir.getParent();//结果为:d:aab
        //获取文件的创建时间
        String data = new Date(dir.lastModified()).toLocaleString();//结果为年月日时分秒的结构
        //4.判断
        //判断是否是文件夹
        boolean isdirectory = dir.isDirectory();
        //判断是否是隐藏的
        boolean isFile = dir.isHidden();
        //5. 遍历文件夹
        File dir2 = new File("d:\图片");
        String[]  files = dir2.list();//返回的是字符串数组
        //File[] files2 = dir2.listFiles();//返回的是file数组
        for(String str:files){
            System.out.println(str);
        }
    }
    View Code

    3. FileFilter接口

    # public interface FileFilter     
    #     boolean accept(File pathname)
    # 当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件才可出现在listFiles()的返回值中.

    例子:

    public static void main(String[] args) throws Exception{
        File dir = new File("d:\图片");
        File[] files = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                //只筛选.jpg结尾的文件
                if(pathname.getName().endsWith(".jpg")){
                    return true;
                }
                return false;
            }
        });
        for(File file:files){
            System.out.println(file.getName());
        }
    }
    View Code

    4. 递归删除和递归遍历

    # 递归遍历文件夹+递归删除文件夹

    例子:

    public static void main(String[] args) throws Exception{
        //递归遍历文件夹
        listDir(new File("d:\myfiles"));
        //递归删除文件夹
        deleteDir(new File("d:\myfiles"));
    }
    //递归遍历文件夹
    public static void listDir(File dir){
        File[] files = dir.listFiles();
        if(files!=null&&files.length>0){
            for(File file:files){
                if(file.isDirectory()){
                    listDir(file);//这用到了递归
                }else {
                    System.out.println(file.getAbsoluteFile());
                }
            }
        }
    }
    //递归删除文件夹
    public static void deleteDir(File dir){
        File[] files = dir.listFiles();
        if(files!=null&&files.length>0){
            for(File file:files){
                if(file.isDirectory()){
                    deleteDir(file);//递归
                }else{
                    file.delete();
                }
            }
        }
        dir.delete();
    }
    View Code

    5. Properties

    # Properties:属性集合
    # 特点:
    (1)存储属性名和属性值
    (2)属性名和属性值都是字符串类型
    (3)没有泛型
    (4)和流有关

    例子:

    public static void main(String[] args) throws Exception{
         //1. 创建一个集合
         Properties properties = new Properties();
         //2. 添加数据
         properties.setProperty("username","zhangsan");
         properties.setProperty("age","20");
         System.out.println(properties.toString());//结果为:{age=20, username=zhangsan}
         //3. 遍历
         //3.1 keySet
         //3.2 entrySet
         //3.3 stringPropertiesNames()
         Set<String> pronames = properties.stringPropertyNames();
         for(String pro:pronames){
             System.out.println(pro+"---"+properties.getProperty(pro));//结果:age---20  username---zhangsan
         }
         //4. 和流有关的方法
         //-----------list------------
         PrintWriter pw = new PrintWriter("d:\print.txt");
         properties.list(pw); //之后print.txt文件中就有两条数据了 age=20  username=zhangsan
         pw.close();
         //-----------store保存-----------
         FileOutputStream fos = new FileOutputStream("d:\print.properties");
         properties.store(fos,"注释");
         fos.close();
         //-----------load加载------------
         Properties properties2 = new Properties();
         FileInputStream fis = new FileInputStream("d:\store.properties");
         properties2.load(fis);
         fis.close();
     }
    View Code

     持续更新!!!

  • 相关阅读:
    在mac上搭建python环境
    iOS开发-你真的会用SDWebImage?(转发)
    iOS tableview 优化总结
    Masonry 实现输入框随键盘位置改变
    sudo 权限问题
    nodejs save遇到的一个坑
    iOS app的webview注入JS遇到的坑
    HW18-广搜
    HW17-深搜
    HW16-动归2
  • 原文地址:https://www.cnblogs.com/flyinghome/p/14700600.html
Copyright © 2020-2023  润新知