IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【文件IO流】----------->File类是一种流吗?它有什么用? -> 正文阅读

[Java知识库]【文件IO流】----------->File类是一种流吗?它有什么用?

一、File类的简介和构造方法

在这里插入图片描述

IO流操作中绝大部分都是对文件进行操作,所以Java就提供了一个File类供我们来操作文件,Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
File封装的并不是一个真正存在的文件。 仅仅是一个路径名,它可以存在,也可以不存在。 后面需要通过对应的方法将其变成真正存在的。

通过以下构造方法创建一个File对象:

	File(String pathName)              根据字符串路径创建一个File对象
      File(String parent,String child)   根据字符串父级路径和子级路径创建File对象
      File(File parent,String child)       根据File类型父级路径和字符串子级路径创建File对象

示例代码:


//   根据字符串路径创建一个File对象
        File f1 = new File("D:\\java\\Typora");
        System.out.println(f1);
        
//     根据字符串父级路径和子级路径创建File对象
        File f2 = new File("D:\\java", "Typora");
        System.out.println(f2);
        
// 根据File类型父级路径和字符串子级路径创建File对象
        File f3 = new File("D:\\java");
        File f4 = new File(f3, "Typora");
        System.out.println(f4);

二、File类的功能

创建功能

 boolean createNewFile()       创建一个新文件
   boolean mkdir()                     创建单级文件夹
      boolean mkdirs()                   创建多级文件夹

示例代码:

 //	在E:\\itcast目录下创建一个文件java.txt
      File f1 = new File("E:\\itcast\\java.txt");
      System.out.println(f1.createNewFile());
 
      //在E:\\itcast目录下创建一个目录JavaSE
      File f2 = new File("E:\\itcast\\JavaSE");
      System.out.println(f2.mkdir());
  
      //在E:\\itcast目录下创建一个多级目录JavaWEB\\HTML
      File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
      System.out.println(f3.mkdirs());
  
      //在E:\\itcast目录下创建一个文件javase.txt
      File f4 = new File("E:\\itcast\\javase.txt");
      System.out.println(f4.createNewFile());

判断功能

  boolean isDirectory()	判断是否是文件夹
  boolean isFile()		判断是否是文件
  boolean exists()		判断文件是否存在

示例代码:

  File f = new File("D:\\java");
        System.out.println(f.isDirectory());//判断是否是目录
        System.out.println(f.isFile());//判断是否是文件
        System.out.println(f.exists());//判断文件是否存在
        //返回boolean类型

获取方法

 String getAbsolutePath()	获取绝对路径
 String getPath()		获取构造方法中的路径
 String getName()		获取文件或文件夹的名称
 String[] list()		获取目录下所有内容,返回字符串数组
 File[] listFiles()		获取目录下所有内容,返回File对象数组

//        String getAbsolutePath () 获取绝对路径
//        String getPath () 获取构造方法中的路径
//        String getName () 获取文件或文件夹的名称
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getPath());
        System.out.println(f.getName());

//        String[] list()		获取目录下所有内容,返回字符串数组
        File f2 = new File("D:\\java\\zkwf");
        String[] list = f2.list();
        for (String str : list) {
            System.out.println(str);
        }
//        File[] listFiles()	获取目录下所有内容,返回File对象数组
        File[] files = f2.listFiles();
        for (File file : files) {
            System.out.println(file);
        }

🔈

  • 绝对路径:完整的路径,从盘符开始

  • 相对路径:相对于当前项目工作空间下

删除功能

 boolean delete()		删除文件或文件夹(文件夹必须为空)
//        在当前模块目录下创建java.txt文件
        File f3 = new File("java.txt");
        System.out.println(f3.createNewFile());
        //删除当前模块目录下的java.txt文件
        System.out.println(f3.delete());

三、拓展–递归

概述:
以编程的角度来看,递归指的是方法定义中调用方法本身的现象
把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算

案例

案例需求:

?	给定一个路径(E:\\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台

实现代码:

public class DiGuiDemo02 {
    public static void main(String[] args) {
        //根据给定的路径创建一个File对象
//        File srcFile = new File("E:\\itcast");
        File srcFile = new File("E:\\itheima");

        //调用方法
        getAllFilePath(srcFile);
    }
    //定义一个方法,用于获取给定目录下的所有内容,参数为第1步创建的File对象
    public static void getAllFilePath(File srcFile) {
        //获取给定的File目录下所有的文件或者目录的File数组
        File[] fileArray = srcFile.listFiles();
        //遍历该File数组,得到每一个File对象
        if(fileArray != null) {
            for(File file : fileArray) {
                //判断该File对象是否是目录
                if(file.isDirectory()) {
                    //是:递归调用
                    getAllFilePath(file);
                } else {
                    //不是:获取绝对路径输出在控制台
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
}

递归的注意事项

  • 递归一定要有出口。否则内存溢出
  • 递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:27:07  更:2021-11-12 19:28:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:57:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码