Java第六章第2节:输入输出流( I/O流) 文件读写 File类

简介

👨‍💻个人主页:@云边牧风
👨‍🎓小编介绍:欢迎来到云边牧风破烂的小星球🌝
📋专栏:Java基础知识
🔑本章内容:输入输出流
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~

 这一节的主要内容有:

 File类

 读写文本文件

读写二进制文件

 随机存取文件读写

一、File类

1.1概念

①是什么?👇

以抽象的方式代表文件名和目录路径名的一种文件处理方法类

②有什么用?👇

该类主要用于文件和目录的创建、文件的查找和文件的删除等。

表示磁盘文件信息

定义了一些与平台无关的方法来操纵文件
创建 删除 文件
重命名 文件
判断文件 是否存在 读写权限
设置和查询文件的 最近修改时间 等信息

 

File类的对象可以作为文件流的参数(而且是可传递的)

 1.2常见的方法有:

File(String name)

name表示文件/目录的名称

可以包含路径信息

File(String pathToName , String name)

pathToName表示路径

name表示文件名称

File(File directory, String name)

File对象directory表示目录

name表示文件名称

File(URI uri)

使用统一资源定位符定位文件

canRead()/canWrite():是否可读/

exists():是否存在

isFile():是否是文件

isDirectory():是否是目录

delete()删除文件或目录

如果是目录,必须是空目录才能删除成功
删除成功返回真,否则返回假

1.3操作文件常见技巧:

创建文件
先使用 exists () 方法判断文件是否存在
createNewFile (); 创建文件
mkdir () 创建文件夹
读写文件
先使用 exists () 方法判断文件是否存在
再使用 canRead ()/ canWrite () 方法判断文件权限
写文件时使用 isFile () 方法来确定是否是一个文件

练习:

1.D盘创建文件夹,以学号命名

2.文件夹内创建两个文件a.txt, b.jpg

3.文件夹内创建子文件夹 以名字命名

在执行以下代码前,D盘中并没有“1234567890”的文件夹

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

public class Main {
    public static void main(String[] args) throws IOException {
        String optname0 = "D:\\1234567890";//先声明一个路径(绝对路径)
        String optname1 = optname0+"\\a.txt";//先声明文件的路径和名称(绝对路径)
        String optname2 = optname0+"\\b.jpg";
        String optname3 = optname0+"\\文森学长";//先声明子文件夹路径(绝对路径)
        File f0 = new File(optname0);//执行new操作(申请空间的同时执行了创建的操作)
        File f1 = new File(optname1);
        File f2 = new File(optname2);
        File f3 = new File(optname3);
        if (f0.mkdir()){//如果f0执行的是创建文件夹(前提是该文件夹事先不存在),成功了返回true
            System.out.println("目标文件夹已创建");
        }
        else {//否则就是未创建文件夹,因为f0路径下已经存在了
            System.out.println("目标文件夹已存在");
        }
        if (f1.createNewFile()){//如果f1执行的是创建文件(前提是该文件事先不存在),成功了返回true
            System.out.println("目标文件1已创建");
        }
        else {//否则就是未创建文件,因为f1路径下已经存在了
            System.out.println("目标文件1已存在");
        }
        if (f2.createNewFile()){
            System.out.println("目标文件2已创建");
        }
        else {
            System.out.println("目标文件2已存在");
        }
        if (f3.mkdir()){
            System.out.println("目标子文件夹已创建");
        }
        else {
            System.out.println("目标子文件夹已存在");
        }
        
    }
}

运行结果:

目标文件夹已创建
目标文件1已创建
目标文件2已创建
目标子文件夹已创建

打开文件管理可以看到刚刚运行的结果:

注意:保持原代码不变,再次运行的结果为:

目标文件夹已存在
目标文件1已存在
目标文件2已存在
目标子文件夹已存在

接着我们可以执行以下代码:

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

public class Main {
    public static void main(String[] args) throws IOException {
        String dirname = "D:\\1234567890";
        File f1 = new File(dirname);
        if (f1.isDirectory()) {
            System.out.println("Directory of " + dirname);
            String s[] = f1.list();
            for (int i = 0; i < s.length; i++) {
                File f = new File(dirname + "/" + s[i]);
                if (f.isDirectory()) {
                    System.out.println(s[i] + " is a directory");
                } else {
                    System.out.println(s[i] + " is a file");
                }
            }
        } else {
            System.out.println(dirname + " is not a directory");
        }

    }
}

得到运行结果:

Directory of D:\1234567890
a.txt is a file
b.jpg is a file
文森学长 is a directory

删除文件
先使用 exists () 方法判断文件是否存在
再使用 isDirectory () 方法来确定是文件还是目录
如果是目录,使用 list () 方法来判断目录是否为空
String[ ] strArr = aFile. list ();
//   strArr .length == 0 表示没有文件
delete 方法

接着上一个实验:

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

public class Main {
    public static void main(String[] args) throws IOException {
        String optname0 = "D:\\1234567890";//先声明一个路径(绝对路径)
        String optname1 = optname0+"\\a.txt";//先声明文件的路径和名称(绝对路径)
        File f0 = new File(optname0);//执行new操作(申请空间的同时执行了创建的操作)
        File f1 = new File(optname1);
        boolean deleted = f1.delete();
        if(deleted){
            System.out.println("文件已被删除!");
        }
        else {
            System.out.println("文件删除失败!");
        }

    }
}

结果为:文件已被删除!

注意处理IO异常:

执行文件操作时,一般使用 try来进行,如果不使用try的话(跟小编前面的实验一样),就需要在main后面接上throws IOException,并且头文件需要import java.io.IOException;

结束语:

以上是Jav第六章第2节的全部内容 希望大家喜欢

下一节讲第六章第3节:文件读写—— 读写文本文件

喜欢的可以点赞+关注哈 ❤

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边牧风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值