Java有关文件(File)和IO流的学习笔记

IO流概念

IO流即Input流和Output流

流(Stream)可以理解为内存与磁盘建立的一条传输数据的通道,Input流是从内存向磁盘传输数据的通道(写文件),Output流是从磁盘向内存传输数据的通道(读文件)

分类

字节流、字符流

区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

字节流可以处理一切文件,而字符流只能处理纯文本文件。

File类

表示磁盘中的文件或者目录(文件夹)

构造方法

 常用方法

 获取功能的方法

        public String getAbsolutePath() :返回此File的绝对路径名字符串。
        public String getPath() :将此File转换为路径名字符串。
        public String getName() :返回由此File表示的文件或目录的名称。
        public long length() :返回由此File表示的文件的⻓度。

判断功能的方法

        public boolean exists() :此File表示的文件或目录是否实际存在。
        public boolean isDirectory() :此File表示的是否为目录。
        public boolean isFile() :此File表示的是否为文件。

创建删除功能的方法

        public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
        public boolean delete() :删除由此File表示的文件或目录。
        public boolean mkdir() :创建由此File表示的目录。
        public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

方法实操以及注释

package b_file;

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

public class Demo1 {
    public static void main(String[] args) throws IOException {
        // 使用路径创建 File 对象
        File file = new File("dd/ff/ee/gg");
        System.out.println(file);

        // 判断文件或者目录是否存在
        boolean exists = file.exists();
        System.out.println("是否存在: " + exists);

        // 判断是否是文件
        boolean file1 = file.isFile();
        System.out.println("是否是文件: " + file1);

        // 判断是否是目录
        boolean directory = file.isDirectory();
        System.out.println("是否是目录: " + directory);

        // 创建空文件 -> 当exists是false
        boolean newFile = file.createNewFile();
        System.out.println("是否创建: " + newFile);

        // 创建空目录 -> exists-false, 父路径的目录都存在
        boolean mkdir = file.mkdir();

        // 创建目录, 顺便把不存在的父目录一起创建
        file.mkdirs();
    }
}

注意

delete()方法只能删除空文件夹和文件,如果文件夹中有文件,则不能用delete()方法直接删除,需要把文件夹中的文件删光才能用此方法删除文件夹

实现代码如下:

package b_file;

import java.io.File;

public class Demo6 {
    // 递归删除 aa 文件夹
    public static void main(String[] args) {
        File file = new File("aa");
        deleteDir(file);
    }

    public static void deleteDir(File dir) {
        // 1.列出dir目录中全部的文件对象
        File[] files = dir.listFiles();
        if (files != null && files.length != 0) {
            // 2.循环删除每一个文件对象
            for (File f : files) {
                if (f.isDirectory()) {
                    deleteDir(f); // 递归
                } else {
                    f.delete();
                }
            }
        }
        // 3.dir是空目录了, 可以直接删除
        dir.delete();
    }
}

IO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值