【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:\aa\bb\cc
    // 获取名称
    String name = dir.getName();//结果为:cc
    //获取父目录
    String parentsource = dir.getParent();//结果为:d:\aa\bb
    //获取文件的创建时间
    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

 

 

 

 持续更新!!!

 

posted @ 2021-04-25 15:46  夏夜凉凉  阅读(91)  评论(0编辑  收藏  举报