2021-2-18
1.File简述
2.File概述和构造
package com.wc.file;
import java.io.File;
/**
* @author wc
* @Date: 2021/02/18/15:46
*/
public class MyFile {
public static void main(String[] args) {
//method1();
//method2();
//method3();
}
private static void method3() {
File file1=new File("D:\\干休所");
String path2="a.txt";
File file = new File(file1,path2);
System.out.println(file);
}
private static void method2() {
//父路径和子路径进行拼接
String path1="D:\\干休所";
String path2="a.txt";
File file=new File(path1,path2);
System.out.println(file);
}
private static void method1() {
//为什么要将字符串表示的路径变成file对象
//为了使用file类中的方法(增,删)
//将给定的路径名字字符串转为抽象的路径名来创建新的file
String path="D:\\干休所\\a.txt";
File file=new File(path);
System.out.println(file);
}
}
3.File类的创建功能(createNewfile,mkdirs)
4.File的判断和获取功能(isDirectory,isfile,exists,getName)
5.File类高级获取功能(listFiles)
6.File练习
package com.wc.file;
import java.io.File;
import java.io.IOException;
/**
* @author wc
* @Date: 2021/02/18/17:13
*/
public class MyFile2 {
public static void main(String[] args) throws IOException {
// File file=new File("Stream\\aaa\\a.txt");
// file.createNewFile();
/* file.createNewFile();方法创建文件所在的文件夹必须存在,
而此时aaa文件夹不存在*/
File file = new File("Stream\\aaa");
//如果文件夹不存在,则创建文件夹
if (!file.exists()){
file.mkdirs();
}
File file1 = new File(file,"a.txt");
file1.createNewFile();
}
}
package com.wc.file;
import java.io.File;
/**
* @author wc
* @Date: 2021/02/18/17:31
*/
public class MyFile3 {
public static void main(String[] args) {
//删除一个多层文件夹,delete方法
//只能删除文件和空文件夹
//如果要删除一个有内容的文件夹
//先删掉这个文件夹的所有内容
//最后再删掉这个文件夹
File src=new File("D:\\src");
deleteDir(src);
}
private static void deleteDir(File src) {
//先删掉文件夹的所有内容
//获取所有文件夹
File[] files = src.listFiles();
//遍历
for (File file : files) {
if (file.isFile()){
file.delete();
}else {
//参数一定要是src文件夹的file对象,递归file,防止里面有文件夹
deleteDir(file);
}
}
//最后删除这个文件夹
src.delete();
}
}
package com.wc.file;
import java.io.File;
import java.util.HashMap;
/**
* @author wc
* @Date: 2021/02/19/9:24
*/
public class MyFile4 {
public static void main(String[] args) {
//统计一个文件夹中,每种文件出现的次数
File file = new File("Stream");
HashMap<String, Integer> hm = new HashMap<>();
getFileCount(hm, file);
System.out.println(hm);
}
private static void getFileCount(HashMap<String, Integer> hm, File file) {
//获取所有文件
File[] files = file.listFiles();
for (File f : files) {
//如果是文件,首先获取文件的后缀名
if (f.isFile()){
String fileName = f.getName();
String[] fileNameArr = fileName.split("\\.");
if (fileNameArr.length==2){
//通过.分割,获取文件的后缀
String fileEndName = fileNameArr[1];
//判断一下当前文件在不在
if (hm.containsKey(fileEndName)){
Integer count = hm.get(fileEndName);
count++;
hm.put(fileEndName,count);
}else {
//没有出现的文件名设置次数为1
hm.put(fileEndName,1);
}
}
}else {
//文件夹,递归
getFileCount(hm, f);
}
}
}
}