File,io 流(一)

存诸数据的方案

|----------------------|-----------------------------|------------------------------------------------|-------------------------|
| 变量01 | 数组02 | 集合03 | 对象04 |
| double money=9999.5; | int[] age=new int[100]; | List<Student> students =new ArrayList<>(); | Student s=new Student() |

它们都是内存中的数据容器,它们记住的数据,在断电,或者程序终止时会丢失.

有些数据想长久保存起来,咋整?

File

文件是非常重要的存储方式,在计算机硬盘中。

即便断电,或者程序终止了,存储在硬盘文件中的数据也不会丢失。

File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。

获取文件信息(大小,文件名,修改时间)

创建文件/文件夹删除文件/文件夹

判断文件的类型

...

注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。

IO流

用于读写数据的(可以读写文件,或网络中的数据)

|-----------|
| File:代表文本 |
| io流:读写数据 |

创建File类的对象

|-----------------------------------------|-------------------------|
| 构造器 | 说明 |
| public File(String pathname) | 根据文件路径创建文件对象 |
| public File(String parent,String child) | 根据父路径和子路径名字创建文件对象 |
| public File(File parent,String child) | 根据父路径对应文件对象和子路径名字创建文件对象 |

注意

File对象既可以代表文件、也可以代表文件夹。

File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的。

绝对路径、相对路径

绝对路径:从盘符开始

File file1=new File("D://itheimalla.txt");

相对路径:不带盘符,默认直接到当前工程下的目录寻找文件。

File file3=new File("模块名\\a.txt");

复制代码
import java.io.File;

//掌握File创建对象,代表具体文件的方案
public class File1 {
    public static void main(String[] args) {
//创建一个具体的文件,指代某个具体的文件
        //File f1=new File("G:\\heima1.txt\\heima.txt");
        //File f1=new File("G:/heima1.txt/heima.txt");
        File f1=new File("G:"+File.separator+"heima1.txt"+File.separator+"heima.txt");
        System.out.println(f1.length());//文件大小
        File f2=new File("F:\\统计学习课件");
        System.out.println(f2.length());
        //注意:File对象可以指代一个不存在的文件路径
        File f3=new File("G:\\今天");
        System.out.println(f3.length());
        System.out.println(f3.exists());
        //绝对路径:带盘符的
        //相对路径:不带盘符的,默认是直接去工程下寻找文件的
        //File f4=new File("D:\\code\\weilai1\\src\\itheima.txt");
        File f4=new File("src\\\\itheima.txt");
        System.out.println(f4.length());
        System.out.println(f4.exists());
    }
}

File提供的判断文件类型、获取文件信息功能

方法名称及说明

public boolean exists() 判断当前文件对象,对应的文件路径是否存在,存在返回true

public boolean isFile() 判断当前文件对象指代的是否是文件,是文件返回true,反之。

public boolean isDirectory() 判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。

public String getName() 获取文件的名称(包含后缀)

public long length() 获取文件的大小,返回字节个数

public long lastModified() 获取文件的最后修改时间。

public String getPath() 获取创建文件对象时,使用的路径

public String getAbsolutePath()获取绝对路径

复制代码
import java.io.File;
import java.text.SimpleDateFormat;

//目标:掌握File提供的判断文件类型、获取文件信息功能
public class File2 {
    public static void main(String[] args) {
        //1.创建文件对象,指代某个文件
        File file=new File("G:/heima1.txt/heima.txt");
//2、public boolean exists(0:判断当前文件对象,对应的文件路径是否存在,存在返回true.
        System.out.println(file.exists());

//3、public boolean isFile():判断当前文件对象指代的是否是文件,是文件返回true,反之。
        System.out.println(file.isFile());

//4、public boolean isDirectory(:判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。
        System.out.println(file.isDirectory());

//5.public String getName(:获取文件的名称(包含后缀)
        System.out.println(file.getName());

//6.public long Length():获取文件的大小,返回字节个数
        System.out.println(file.length());

//7.pUblic Long lastModified(:获取文件的最后修改时间。
       // System.out.println(file.lastModified());
       long time= file.lastModified();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(time));

//8.pubLic String getPath(:获取创建文件对象时,使用的路径
        System.out.println(file.getPath());

//9.public String  getAbsoLutePath(0:获取绝对路径
        System.out.println(file.getAbsolutePath());
    }
}

File类创建文件的功能

|--------------------------------|------------|
| 方法名称 | 说明 |
| public boolean createNewFile() | 创建一个新的空的文件 |
| public boolean mkdir() | 只能创建一级文件夹 |
| public boolean mkdirs() | 可以创建多级文件夹 |

File类删除文件的功能

|-------------------------|-----------|
| 方法名称 | 说明 |
| public boolean delete() | 删除文件、空文件夹 |

注意:

delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站。

File类提供的遍历文件夹的功能

|------------------------------|-------------------------------------|
| 方法名称 | 说明 |
| public String[ ] list() | 获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。 |
| public File[ ] listFiles() | 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点) |

复制代码
import java.io.File;

public class File4 {
    //目标:掌握File提供的遍历文件夹的方法
    public static void main(String[] args) {
        File file=new File("G:\\今天");
          //1、public String[] List(:获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。一一
String []list=file.list();
        for (String s : list) {
            System.out.println(s);
        }
         //2、public File[]listFiles(:(重点)获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
        File[]files=file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);
        }
    }
}

使用listFiles方法时的注意事项:

当主调是文件,或者路径不存在时,返回null

当主调是空文件夹时,返回一个长度为0的数组

当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回

当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件

当主调是一个文件夹,但是没有权限访问该文件夹时,返回null

案例

复制代码
import java.io.File;

public class AnLi {
    public static void main(String[] args) {
        //目标:改变某个文件夹下的视频序号,要求从19开始
        File file=new File("E:/磊哥面授/java基础/视频");
        //拿到下面的全部视频,一级文件对象
        File [] files=file.listFiles();
        //一个一个的找
        for (File file1 : files) {
            //拿到它的名字,改成新名字
            String name=file1.getName();
            String index=name.substring(0,name.indexOf("、"));
            String lastName=name.substring(name.indexOf("、"));
            String newName=(Integer.valueOf(index)+18)+lastName;
            //正式改名
            file1.renameTo(new File(file,newName));

        }

    }
}
相关推荐
奋进的小暄3 小时前
数据结构(java)栈与队列
java·开发语言·数据结构
SnXJi_3 小时前
纷析云开源财务软件:企业财务数字化转型的灵活解决方案
java·gitee·开源·开源软件
pingzhuyan3 小时前
03(总)-docker篇 Dockerfile镜像制作(jdk,jar)与jar包制作成docker容器方式
java·docker·jar
caihuayuan44 小时前
Redis奇幻之旅(三)1.redis客户端与服务端
java·大数据·sql·spring·课程设计
匆匆整棹还5 小时前
关于tomcat乱码和idea中控制台乱码的问题
java·tomcat·intellij-idea
何似在人间5756 小时前
SpringAI+DeepSeek大模型应用开发——1 AI概述
java·人工智能·spring·springai
匹马夕阳6 小时前
Java开发中的设计模式之观察者模式详细讲解
java·观察者模式·设计模式
风铃儿~6 小时前
Java微服务注册中心深度解析:环境隔离、分级模型与Eureka/Nacos对比
java·分布式·微服务·面试
赤橙红的黄7 小时前
Spring Boot中接入DeepSeek的流式输出
java·服务器·javascript
小样vvv7 小时前
【AI】IDEA 集成 AI 工具的背景与意义
java·人工智能·intellij-idea