小白学Java17:IO流(上):File和RandomAccessFile

文件类 File

构造函数

File file = new File("文件路径");
    路径分类:
        绝对路径
        相对路径:相对于某个基准目录的路径(SE中是项目目录为参照路径的)
            .表示当前目录的根目录
            ..表示当前目录的上一级目录

常用方法

file.exists():测试文件是否存在
file.getName();获取文件名
file.getlength();获取文件大小
file.isFile():判断当前file对象是否为文件类型
    file.isDirectory():判断当前file对象是否为文件夹类型
    file.isHidden():判断是否为隐藏文件
file.canRead()判断是否可读
    file.canWrite()判断是否可写
file.getPath():获取当前file对象的路径
file.lastModifile();获取最后一次修改file对象的时间

文件的创建和删除
file.createNewFile();按照指定路径创建文件
file.delete();删除file对象所代表的文件 

文件夹的创建和删除
file.mkdirs();按照file的路径创建指定的文件夹
file.delete();删除指定的目录。删除前必须是空目录
file.listFiles();以File数组的形式获取此文件夹下的所有直系子项

小知识:使用递归清理空文件夹

private static void digui(File file) {
		if (file.isDirectory()) {
			for (File file1 : file.listFiles()) {
				digui(file1);
			}

			if (file.delete()) {
				System.out.println(file.getPath() + "被删除");

			}

		}
	}

文件过滤器:FileFilter

用法

FileFilter ff = new FileFilter() {
    @Override
	public boolean accept(File file) {
        //输入判定规则}
         };

举例

//使用文件过滤器过滤当前目录下所有后缀名为.java的文件
public static void main(String[] args) {
		String path = "./src";
		File file = new File(path);
		fangfa1(file);
	}

	private static void fangfa1(File file) {
		File[] listFiles = file.listFiles(new FileFilter() {

			@Override
			public boolean accept(File pathname) {
				return pathname.isDirectory() | pathname.getName().endsWith(".java");
			}
		});

		for (File file2 : listFiles) {
			if (file2.isDirectory()) {
				fangfa1(file2);
			} else {
				System.out.println(file2.getPath());
			}
		}
	}

随机文件读写类:RandomAccessFile

需要注意:
因为是基于指针,所以,一定要新建两个同一对象,一个读,一个写

构造函数

RandomAccessFile raf = new RandomAccessFile(file, "rw");
                    new RandomAccessFile(path, "rw");
                    
                    r:只读
                    rw:读写

常用方法

close():关流操作
write(int byte):表示写入一字节 的数据
    write(byte[] byte) 写入全部字节数组的数据
    writeXXX(xxxx):表示写入什么类型的数据
read()读取亿字节的数据
    read(byte[] b):将读到的数据全部存入给定的字节数组中
    readInt():表示从该文件中读取一个int数据
getFilePointer():获取当前指针所在的位置
    seek(long ):设置当前指针的位置

使用RandomAccessFile实现文件的复制

long start = System.currentTimeMillis();//创建开始时间戳
		RandomAccessFile read = new RandomAccessFile("F:\\Java2020\\java2020\\src\\信用卡管理.xlsx", "rw");//创建文件读取流
		RandomAccessFile write = new RandomAccessFile("src\\信用卡管copy.xlsx", "rw");//创建文件写入流
		
		byte[] b = new byte[1024*10];//创建缓冲数组
		int len = -1;//设定标记位
		while((len = read.read(b))!=-1){
			write.write(b, 0, len);//循环读取并写入
		}
		long end = System.currentTimeMillis();
		white.close();//关流
		read.close();//关流
		System.out.printf("文件复制完毕,耗时%d毫秒",(end-start));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值