Java学习_20220620

IO框架

1. 桥转换流:字节流和字符流之间的转换,可设置字符的编码方式  

InputStreamReader(字节流-->字符流)/OutputStreanWriter(字符流-->字节流)

创建方式:

FileInputStream fileInputStream = new FileInputStream("e:\\aaa.txt");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"utf-8");
FileOutputStream fileOutputStream = new FileOutputStream("e:\\info.txt");
OutputStreamReader outputStreamReader = new OutputStreamReader(fileOutputStream,"utf-8");

2.文件操作File

(1)分隔符

System.out.println("名称分隔符:"+ File.separator);  //  ;
System.out.println("路径分隔符:"+ File.pathSeparator);  //  \

 (2)创建文件

File file = new File("e:\\files.txt"); //抛出异常
if(!file.exists()){
    boolean b = file.createNewFile();
    System.out.println("创建结果:"+b); // 若存在该文件,则什么也不返回,若不存在该文件,返回true
}

(3)删除文件

//直接删除文件
System.out.println(file.delete()); //true
//jvm退出时删除
file.deleteOnExit();
Thread.sleep(5000);

 (4)获取文件信息

//获取文件信息
System.out.println("获取文件绝对路径:" +file.getAbsolutePath());  //获取文件绝对路径:e:\files.txt
System.out.println("获取文件路径:" +file.getPath());  //获取文件路径:e:\files.txt
System.out.println("获取文件名称:" +file.getName());  //获取文件名称:files.txt
System.out.println("获取父目录:" +file.getParent());  //获取父目录:e:\
System.out.println("文件创建时间:" +new Date(file.lastModified())); //文件创建时间:Mon Jun 20 14:14:40 CST 2022

(5)判断

System.out.println("是否可写:"+file.canWrite());
System.out.println("是否可读:"+file.canRead());
System.out.println("是否是文件"+file.isFile());
System.out.println("是否隐藏"+file.isHidden());

(6)文件夹操作

//创建文件夹
    File dir = new File("e:\\qqq\\xxx");
    if(!dir.exists()){
       // dir.mkdir();//只能创建单级目录
        boolean b = dir.mkdirs();
        System.out.println("创建结果:"+b);
    }
    //删除文件夹
    //直接删除(只能删除最下层的空目录)
    System.out.println(dir.delete());
    //使用jvm删除
    dir.deleteOnExit();
    Thread.sleep(5000);

    //遍历文件夹
    File dir2 = new File("C:\\Users\\25407\\Desktop\\微博图片");
    String[] files = dir2.list();
    System.out.println("============");
    for(String string : files){
        System.out.println(string);
    }

3. FileFilter接口

当调用File类中的listFiles()方法时,使用FileFilter接口实现类,对获取文件进行过滤,只用满足条件的文件才可以出现在listFiles()返回值中。

File[] files2 = dir2.listFiles(new FileFilter() {
        @Override
        public boolean accept(File afile) {
            if(afile.getName().endsWith(".png"))
                return true;//只选择后缀为:.png 的文件
            return false;
        }
    });
    for(File file :files2){
        System.out.println(file.getName());
    }
}

 4. 递归遍历和递归删除文件

public static void main(String[] args) {
    ListDir(new File("C:\\Users\\25407\\Desktop\\微博图片"));
    deleteDir(new File("C:\\Users\\25407\\Desktop\\微博图片"));
}
//递归遍历文件夹
public static void ListDir(File dir){
   File[] files = dir.listFiles();
    System.out.println(dir.getAbsolutePath());
    if(files!=null&&files.length>0){
        for(File file :files){
            if(file.isDirectory()){
                ListDir(file); //递归
            }else{
                System.out.println(file.getAbsolutePath());
            }
        }
    }
}

//递归删除文件夹
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{
                System.out.println(file.getAbsolutePath()+"删除:"+file.delete());
            }
        }
    }
}

5. Properties:属性集合

特点:1. 存储属性名和属性值

  2. 属性名和 属性值都是字符串类型

  3. 没有泛型

  4. 和流有关

//创建集合
Properties properties = new Properties();
//添加数据
properties.setProperty("username","Zhangsan");
properties.setProperty("age","20");
System.out.println(properties.toString());
//遍历:KeySet\entrySet
//stringPropertyNames()
Set<String> pronames = properties.stringPropertyNames();
for(String pro : pronames){
    System.out.println(pro+"====="+properties.getProperty(pro));
}
//和流有关的方法
PrintWriter printWriter = new PrintWriter("e:\\print.txt"); //打印流
properties.list(printWriter);
printWriter.close();
//store方法保存
FileOutputStream fileOutputStream = new FileOutputStream("e:\\store.properties");
properties.store(fileOutputStream,"注释");
fileOutputStream.close();
//load方法加载
Properties properties2 = new Properties();
FileInputStream fileInputStream = new FileInputStream("e:\\store.properties");
properties2.load(fileInputStream);
fileInputStream.close();
System.out.println(properties2.toString());
posted @ 2022-06-20 16:24  浑浑噩噩一只小迷七  阅读(23)  评论(0)    收藏  举报