Collector收集器&File类常用方法&IO流&高效复制文件的方法

Collector收集器

收集器是值:将流中的元素收集到新的集合中

//收集到List集合中
.collect(Collectors.toList());
//收集到Set集合中 可进行去重操作
.collect(Collectors.toSet());
//收集到Map集合中
.collect(Collectors.toMap);
//除map集合是传两个Lambda表达式外其他集合都是传一个Lambda表达式

File

//创建File对象
File file = new File("文件名或文件夹的路径");
  • 路径:

    • 绝对路径: 从盘符开始到具体文件的完整路径
    • 相对路径: 省略了盘符和盘符子目录的文件目录, 默认项目的路径作为前半部分
    • 如果文件不再项目中,只能使用绝对路径
  • 创建文件

    • createNewFile(): 创建文件
    • mkdir(): 创建单层文件夹(不能创建多层文件)
    • mkdirs(): 创建多层文件夹
  • 删除文件

    • delete: 彻底删除文件,彻底删除空文件夹(删除日志信息准备跑路)
  • 判断存在

    • exists: 判断给定的file路径是否存在
  • 判断类型

    • isFile: 判断file路径下的文件是否为文件
    • isDirectory: 判断file路径下的文件是否为文件夹
  • 获取子目录和子文件

    • listFiles: 获取到给定目录下的所有子文件目录和子目录下的所有文件
  • 获取文件或者文件夹的名字

    • getName(): 获取当前文件或文件夹的名称以字符串形式返回
  • 获取当前文件夹下的各个类型的文件的个数

    public static void getFileCount(HashMap<String, Integer> map,File file){
       File[] files = file.listFiles();//获取当前文件夹下所有的内容
      //遍历文件数组判断,如果是文件夹则递归如果是文件则记录
        for(File f : files){
            if(f.isFile()){
                //获取文件后缀名	切分后缀名为字符串形式返回
              String key = f.getName().substring(f.getName().lastIndexOf("."))
            	//如果该键不存在创建该键值对
                  if(!map.containsKey(key)){
                      map.put(key,1);
                  }else{
                   //如果键存在获取值进行自增操作
                   int value = map.get(key);
                      map.put(key, ++value);
                  }
            }
        }
    }
    

IO

  • Input: 输入流 读
  • Output: 输出流 写

读写分类

  • InputStream: 字节输入流
    • FileInputStream: 文件字节输入流
    • BufferedInputStream: 缓冲字节输入流
  • OutputStream: 字节输出流
    • FileOutputStream: 文件字节输出流
    • BufferedOutputStream: 缓冲字节输出流
  • Reader: 读取
    • InputStreamReader: 字符输入流
      • FileReader: 读取字符流
    • BufferedReader: 字符缓冲输入流
  • Writer: 写入
    • OutputStreamWriter: 字符输出流
      • FileWriter: 写入字符流
    • BufferedWriter: 字符缓冲输出流

追加写入可以使用 new FileOutputStream(“文件路径”,true);

根据系统自动进行换行可使用System.lineSeparator();

JDK7新增语法 try- with- resources (idea快捷键 .twr)

try(资源类型 变量 = new 资源对象()){
    
}catch(Exception e){

}
//这样的所用是简化了io流的释放资源操作

一般情况下关闭流的操作

FileOutputStream fos = null;
try{
    fos = new FileOutputStream("文件路径");
    fos.write();
} catch(Exception e){
    e.printStacktrace();
} finally{
    if(fos != null){//判断流存在时,才需要释放流
        try{
            fos.close();
        }catch(Exception e){
            
        }
    }
}

高效复制文件

//原始文件
Path source = Paths.get("源文件路径");
//目标文件
Path target = Paths.get("目标路径");
//进行复制
Files.copy(source, target);

//简化代码
Files.copy(Paths.get("源文件"), Paths.get("目标路径"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值