IO流——File类

File类

File既能表示文件,也能表示文件夹,需要指定一个路径。

File构造方法

构造方法是用来创建对象的,既能创建文件的对象,也能创建文件夹的对象。

public File(String pathname) 
     通过字符串路径创建File对象
public File(String parent, String child) 
     通过字符串的父路径和子路径创建File对象
public File(File parent, String child) 
     通过父路径和子路径常见File对象

演示创建File对象的方式。

//把文件路径,封装为File对象
File f1=new File("C:\\Users\\itheima\\Desktop\\a.txt");
System.out.println(f1);

//根路径父路径和子路径,封装为File对象
File f2=new File("C:\\Users\\itheima\\Desktop","a.txt");
System.out.println(f2);

//创建父路径的对象(文件夹)
File dir =new File("C:\\Users\\itheima\\Desktop");
File f3=new File(dir,"a.txt");
System.out.println(f3);

注意:不管路径是否真实存在,对象都能创建成功。

File类的方法

  • 获取方法
public String getName()
    获取文件或者文件夹的名称
public String getParent()  
    获取父路径。返回字符串
public File getParentFile()
    获取父路径,返回File对象
public String getPath() 
    获取File对象封装的路径
public String getAbsolutePath()  
    获取绝对路径,返回字符串
public File getAbsoluteFile()  
    获取绝对路径,返回File对象
public long length()  
    获取文件的长度(单位:字节)
public long lastModified() 
    获取文件最后一次修改的时间
  • 判断方法
public  boolean exists()  
    判断文件、目录是否存在
public boolean isFile()
    判断是否为文件
public boolean isDirectory()
    判断是否为文件夹
  • 创建方法
public boolean createNewFile() 
    创建文件,创建成功返回true; 创建失败返回false
public boolean mkdir() 
    创建文件夹(单级文件夹)
public boolean mkdirs()  
    创建文件夹(多级文件夹)
  • 删除文件
public boolean delete()
    删除文件或者文件夹(只能删除空的文件夹)
  • 重命名
public boolean renameTo(File dest) 
 	重新命名文件的路径
  • 文件夹遍历
public File[] listFiles()
    获取一个文件夹中所有子文件和子文件夹。
    
    注意:
    	1.如果文件夹是一个空文件夹,返回的数组长度为0
    	2.如果调用者不是一个文件夹,会返回null
    	3.如果文件夹没有权限访问,也会返回null

方法演示

  • 构造方法创建对象
//把文件路径,封装为File对象
File f1=new File("C:\\Users\\itheima\\Desktop\\a.txt");
System.out.println(f1);

//根路径父路径和子路径,封装为File对象
File f2=new File("C:\\Users\\itheima\\Desktop","a.txt");
System.out.println(f2);

//创建父路径的对象(文件夹)
File dir =new File("C:\\Users\\itheima\\Desktop");
File f3=new File(dir,"a.txt");
System.out.println(f3);

File f4=new File("F:\\itcast\\a.txt");
System.out.println(f4);
  • 获取方法演示
File f=new File("C:\\Users\\itheima\\Desktop\\a.txt");

//获取名称
String name = f.getName();
System.out.println(name);

//获取父路径
String parent = f.getParent();
System.out.println(parent);

File parentFile = f.getParentFile();
System.out.println(parentFile);

//获取File对象封装的路径
String path = f.getPath();
System.out.println(path);

//获取文件占用的字节数(长度)
long length = f.length();
System.out.println(length);

//获取最后一个修改的时间
long lstime = f.lastModified();
//根据指定的毫秒值,创建Date对象
Date date=new Date(lstime);
//格式化时间
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(date); 

//打印时间
System.out.println(time);
  • 相对路径和绝对路径
绝对路径:从盘符开始的路径

相对路径: 相对于项目的根目录来说的,把项目的根目录省略了。
       举例:项目的根目录为:C:\IdeaProjects\javase2.0
       绝对路径:    C:\IdeaProjects\javase2.0\\itehima\\a.txt
       相对路径:    itehima\\a.txt
//根据绝对路径,创建File对象
File f1=new File("C:\\IdeaProjects\\javase2.0\\FileDemo\\a.txt");
//获取绝对路径
System.out.println(f1.getAbsolutePath());
System.out.println(f1.length());

//根据相对路径,创建File对象
File f2=new File("FileDemo\\a.txt");
//获取绝对路径
System.out.println(f2.getAbsolutePath());
System.out.println(f2.length());
  • 判断功能的演示
File f = new File("FileDemo\\a.txt");

//判断文件是否存在
if(f.exists()){
    System.out.println("文件存在");
}else {
    System.out.println("文件不存在");
}

//判断是否为文件
if(f.isFile()){
    System.out.println("是文件");
}else {
    System.out.println("是文件夹");
}

//判断是否为文件夹
if(f.isDirectory()){
    System.out.println("是文件夹");
}else {
    System.out.println("是文件");
}
  • 创建功能的演示
//创建文件夹
File dir =new File("FileDemo\\aaa\\bbb\\ccc\\ddd");
dir.mkdirs();

//创建文件
File f = new File("FileDemo\\aaa\\bbb\\ccc\\ddd\\b.txt");
boolean flag = f.createNewFile();
System.out.println(flag);
  • 重命名的演示
File f = new File("FileDemo\\a.txt");
//重命名
f.renameTo(new File("C:\\Users\\itheima\\Desktop\\你好世界.txt"));

File文件夹遍历

  • 获取文件夹中,每一种文件出现的次数
//计算一个文件中,每一种文件出现的次数
//HashMap<String,Integer>: 文件后缀名,次数
//File dir: 文件夹
public static void getCount(HashMap<String, Integer> map, File dir) {
    //获取文件夹中所有的内容
    File[] files = dir.listFiles();
    for (File file : files) {
        if (file.isFile()) {
            //获取文件的名称,再获取后缀名
            String[] arr = file.getName().split("\\.");
            if (arr.length == 2) {
                String endName = arr[1];

                //判断后缀名在map集合中是否存在
                if (map.containsKey(endName)) {
                    //如果存在,获取值,+1,再存回map集合
                    Integer count = map.get(endName);
                    map.put(endName, count + 1);
                } else {
                    //如果不存在,存到map集合中,值是1
                    map.put(endName, 1);
                }
            }
        } else {
            getCount(map, file);
        }
    }
}
  • 删除文件夹
 //删除文件夹
public static void deleteDir(File dir) {
    //1.获取文件夹中所有的内容
    File[] files = dir.listFiles();

    //2.遍历数组中
    for (File file : files) {
        //3.判断file是文件,就直接删除
        if (file.isFile()) {
            file.delete();
        } else { //如果是文件夹,递归调用
            deleteDir(file);
        }
    }

    //删除空的文件夹
    dir.delete();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值