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: 字符缓冲输入流
- InputStreamReader: 字符输入流
- Writer: 写入
- OutputStreamWriter: 字符输出流
- FileWriter: 写入字符流
- BufferedWriter: 字符缓冲输出流
- OutputStreamWriter: 字符输出流
追加写入可以使用 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("目标路径"))