Java文件操作

1.文件

1.1定义

文件是相关记录或者放在一起的数据的集合

1.2理解文件

1.文件可以简单的理解成在外设硬盘上面保存数据的一种方式
2.文件由两部分构成:属性(文件名,文件大小,文件类型等) + 内容(文件里面放的东西)

2.File文件操作类

在 java.io 包之中,用 File 类来对文件进行操作(创建、删除、取得信息等)

2.1File类的初始化

java.io.File 类是一个普通的类,如果要实例化对象,则常用到两个构造方法

方法解释
public File(String pathname)创建指定路径文件对象
public File(String parent, String child)同上,但可指明父路径和子路径

测试代码如下

import java.io.File;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/hh.txt");
    }
}

2.2File类常用方法-基本文件操作

方法说明
public boolean exists()测试指定路径中文件或者目录是否存在
public boolean isDirectory()判定一个文件是目录
public boolean isFile()判定是否是文件
public boolean delete()删除文件
public boolean createNewFile() throws创建一个新文件

示例一:检测文件是否存在

import java.io.File;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/hh.txt");
        System.out.println(file.exists());
    }
}

示例二:检测文件是否存在,若存在就删除

import java.io.File;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/ytc.txt");
        if (file.exists()) {
            file.delete();
        }
    }
}

示例三:创建新文件

import java.io.File;
import java.io.IOException;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/hh.txt");
        try {
            if (!file.exists()) {
                file.createNewFile();
            }
        } catch (IOException e) {
            System.out.println("文件创建失败");
        }
    }
}

2.3File类常用操作-目录操作

方法解释
public boolean mkdir()创建一个空目录
public boolean mkdirs()创建多层目录
public String getParent()取得父路径
public File getParentFile()取得父File对象

示例一:创建一个或多个目录

import java.io.File;
import java.io.IOException;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/dir1/dir2/dir3");
       if (!file.exists()) {
           // 创建第一个没有的目录
           file.mkdir();
           // 创建所有没有的目录
           file.mkdirs();
       }
    }
}

示例二:获取父路径

import java.io.File;
import java.io.IOException;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/ytc.txt");
        System.out.println(file.getParent());
    }
}

示例三: 获取父目录 File 对象,并在父目录下,创建文件demo.txt

import java.io.File;
import java.io.IOException;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/dir1/dir2/dir3/demo.txt");
        File pfile = file.getParentFile();
        try {
            if (!pfile.exists()) {
                pfile.mkdirs();
            }
            if (!file.exists()) {
                file.createNewFile();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.4File类文件常用方法-文件属性操作

方法解释
public long length()取得文件大小(字节)
public long lastModified()最后一次修改日期

示例:取得文件信息

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads/dir1/dir2/dir3/demo.txt");
        System.out.println("文件长度" + file.length());
        System.out.println("文件最后一次修改日期" + new Date(file.lastModified()));
    }
}

2.5File类的常用方法-其他方法

方法解释
public File[] listFiles()列出一个目录的全部组成

示例1:列出某个目录中的全部组成

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads");
        if (file.exists() && file.isDirectory()) {
            File[] files = file.listFiles();
            for(File file1 : files) {
                System.out.println(file);
            }
        }
    }
}

示例2:递归打印某个目录所有文件
方法一:

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads");
        listAllFiles(file);
    }

    public static void listAllFiles(File file) {
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File file1 : files) {
                if (file1.isDirectory()) {
                    listAllFiles(file1);
                } else {
                    System.out.println(file1);
                }
            }
        }
        System.out.println(file);
    }
}

方法二:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Test4 {
    public static void main(String[] args) {
        File file = new File("/Users/yangtongchun/Downloads");
        List<File> list = listAllFiles(file);
        list.stream().forEach((f) -> System.out.println(f.getPath()));
    }

    public static List<File> listAllFiles(File file) {
        List<File> list = new ArrayList<>();
        list.add(file);
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File file1 : files) {
                if (file1.isDirectory()) {
                    list.addAll(listAllFiles(file1));
                } else {
                    list.add(file1);
                }
            }
        }
        return list;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值