Java----File类详解

2023-05-16

File类

      Java中所有的目录都被当成File 对待,它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原因而受到严格限制,文件仍是存储固定和共享信息的主要资源。



在线API文档

http://www.apihome.cn/api/java/File.html




File类封装了一些对文件操作的常用方法



1、构造方法

  • File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

  • File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

  • File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

  • File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。



/**
 * File类的构造函数
 * @author LingDu
 *
 */
public class DemoFile {
    public static void main(String[] args) {
        //File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
        File f1 =new File("src/test.txt");

        //File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
        File f2 =new File(f1,"test.txt");

        //File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
        File f3 =new File("src","test.txt");

        //跨平台的路径
        //separator方法会自动获取不同平台的分隔符
        File f4 =new File(File.separator + "src");

        //win   下是   '\' 
        //linux 下是  '/'
        System.out.println(f4);
    }
}

1


2、创建方法

  • boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

  • boolean mkdir() 创建此抽象路径名指定的目录。

  • boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

    /**
     * 新建一个文件
     */
    public static void test1(){
        File file = new File("newFile.txt");
        try {
            System.out.println("创建文件:" + file.createNewFile());

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 新建一个文件夹
     */
    public static void test2(){
        File file = new File("newDir");
        System.out.println("创建文件夹:" + file.mkdir());
    }


    /**
     * 新建一个多级文件夹
     */
    public static void test3(){
        File file = new File("newDir/1/2/3");
        System.out.println("创建多级文件夹:" + file.mkdirs());
    }

2


3


3、删除方法

  • boolean delete() 删除此抽象路径名表示的文件或目录。

  • void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

    /**
     * 删除文件
     */
    public static void test4(){
        File file = new File("newFile.txt");
        System.out.println("删除文件:" + file.delete());
    }

    /**
     * 删除文件夹
     */
    public static void test5(){
        File file = new File("newDir");
        //删除文件跟删除文件夹的方法是一样的
        //这个方法只能删除空文件夹
        System.out.println("删除文件夹:" + file.delete());
    }

4


4、修改方法


重命名文件/文件夹

  • boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
    /**
     * 重命名一个文件/文件夹
     * 将newFile.txt改成File.txt
     */
    public static void test6(){
        File file = new File("newFile.txt");
        System.out.println("重命名文件:" + file.renameTo(new File("File.txt")));

    }

5



修改权限

  • boolean setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。

  • boolean setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。

  • boolean setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。

  • boolean setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。

  • boolean setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。

  • boolean setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。

  • boolean setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。

  • boolean setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。


    /**
     * 修改文件/文件夹的权限
     * 
     * file.setExecutable(executable) 修改文件是否可执行的方法  有问题  win下不可改
     */
    public static void test8(){
        File file = new File("File.txt");

        System.out.println("文件修改前的属性:--------------------");

        System.out.println("查看文件是否可读:" + file.canRead());
        System.out.println("查看文件是否可写:" + file.canWrite());
        System.out.println("查看文件是否可执行:" + file.canExecute());


        //修改为 不可读、不可写、不可执行
        file.setReadable(false);
        file.setWritable(false);
        file.setExecutable(false);
        System.out.println("文件修改后的属性:--------------------");

        System.out.println("查看文件是否可读:" + file.canRead());
        System.out.println("查看文件是否可写:" + file.canWrite());
        System.out.println("查看文件是否可执行:" + file.canExecute());
    }

6


5、判断方法

  • boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。

  • boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。

  • boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。

  • boolean exists() 测试此抽象路径名表示的文件或目录是否存在。



  • boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。

  • boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。

  • boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。

  • boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。

    /**
     * 判断文件的方法
     */
    public static void test7() {
        File file = new File("File.txt");

        System.out.println("文件是否可读:" + file.canRead());
        System.out.println("文件是否可写:" + file.canWrite());
        System.out.println("文件是否可执行:" + file.canExecute());
        System.out.println("文件是否存在:" + file.exists());

        System.out.println("路径名是否为绝对路径名:" + file.isAbsolute());
        System.out.println("文件是否是一个目录:" + file.isDirectory());
        System.out.println("文件是否是一个标准文件:" + file.isFile());
        System.out.println("文件是否是一个隐藏文件:" + file.isHidden());

    }

7


6、获取方法

  • File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。

  • String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。

  • File getCanonicalFile() 返回此抽象路径名的规范形式。

  • String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。

  • long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。

  • String getName() 返回由此抽象路径名表示的文件或目录的名称。

  • String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。

  • File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。

  • String getPath() 将此抽象路径名转换为一个路径名字符串。

  • long getTotalSpace() 返回此抽象路径名指定的分区大小。

  • long getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。

  • long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。

  • long length() 返回由此抽象路径名表示的文件的长度。

  • static File[] listRoots() 列出可用的文件系统根。

    /**
     * 常用获取方法
     */
    public static void test9() {
        File file = new File("File.txt");
        System.out.println("文件名:" + file.getName());
        System.out.println("路径名:" + file.getPath());
        System.out.println("绝对路径:" + file.getAbsolutePath());
        System.out.println("获取父目录路径字符串(没有返回null):" + file.getParent());
        System.out.println("最后一次修改时间:" + file.lastModified());

    }

8


7、搜索文件

  • String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

  • File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。



在src下创建一个newDir文件夹,然后放入不同类型的文件进行测试

9

public static void test10(){
        File file = new File("newDir");
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            String str = files[i].getName();
            if (files[i].isFile()) {
                System.out.println(files[i] + "---是一个文件");
            }else {
                System.out.println(files[i] + "---是一个文件夹");
            }
        }
    }

10


8、过滤文件

  • String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

  • File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

  • File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

    /**
     * 用系统提供的方法过滤文件
     */
    public static void test11(){
        File file = new File("newDir");
        File files[] = file.listFiles(new FileFilter() {

            /**
             * 实现accept()方法
             */
            @Override
            public boolean accept(File pathname) {
                //过滤所有txt结尾的文件
                if (pathname.getName().endsWith("txt")) {
                    return true;
                }

                return false;
            }
        });
        for (int i = 0; i < files.length; i++) {
            System.out.println(files[i].getName());
        }
    }

11

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java----File类详解 的相关文章

  • 1-11 实验9 网络管理实验1 获取自身的和父节点网络地址、MAC地址

    p p p style color rgb 51 51 51 font family Arial font size 14px line height 26px 获取自身的和父节点网络地址 MAC地址 p p style color rgb
  • 1-14 实验11 获取网络拓扑

    获取网络拓扑 1 实验内容 xff1a PC端串口调试助手向协调器发送命名 topology 协调器接受到命令后 xff0c 将网络拓扑信息发送到PC机串口调试助手上 2 知识点 xff1a 在1 11 实验9 网络管理实验1 获取自身和父
  • S 串口编程 详解3 串口的初始化、打开/关闭

    串口编程 详解3 串口的初始化 程序打开串口 xff0c 采用两种方法 xff1a 1 程序启动 xff0c 调用OnInitDialog 函数 xff0c 打开串口 xff0c 缺省串口号为COM1 xff0c 如果COM1不存在或被占用
  • 求关键路径(包含邻接表的建立、拓扑排序)

    include lt stdio h gt include lt stdlib h gt typedef struct node int adjvex 邻接点域 int info 边上的信息 struct node next 指向下一个邻接
  • FPGA串口回环实验

    本文将从个人理解的角度 xff0c 解释FPGA串口通信的原理 xff0c 并进行实战演示 1 写在前面的话 串口通信是初学FPGA必过的一道坎 xff0c 如果能够在不参考任何资料的情况下自己手搓一套串口回环的代码 xff0c Verio
  • Debug Assertion Failed!解决方法详解

    1 野指针 2 内存泄露 解决方法 1 看一看你的程序里是不是有 ASSERT xff08 xff09 或 VERIFY xff08 xff09 语句 这两个宏是用来测试它的参数是否为真的 出现你说的 xff0c 这说明你的指针或表达试有问
  • 用tftp的方式在u_boot下 烧写uImage内核

    用 u boot 进行下载 uImage 一种 kernel 镜像文件 首先 把编译好的 uImage 文件放在 tftpboot 目录下 用网线把开发板和电脑连上 但PC上的网卡显示是没连接的 xff0c 这一点是没有关系的 xff0c
  • 利用NFS服务挂载NFS根文件系统

    嵌入式Linux根文件系统 xff0c 简单地说 xff0c 根文件系统就是一种目录结构 注意根文件系统和普通的文件系统的区别 常见的Linux根文件系统有 xff1a xff08 1 xff09 NFS xff08 网络根文件系统 xff
  • 数据校验之Checksum算法

    校验和 xff08 Checksum xff09 是网络协议使用的数据错误检测方法 xff0c 并且被认为比LRC xff08 纵向冗余校验 xff0c Longitudinal Redundancy Check xff0c LRC xff
  • 位序转字符串的一种高效方法

    include lt stdio h gt include lt stdlib h gt include lt malloc h gt include lt string h gt include lt arpa inet h gt def
  • OpenSIPS实战(一):OpenSIPS使用简介

    1 OpenSIPS是什么 OpenSIPS xff08 Open SIP Server xff09 是一个成熟的开源SIP服务器实现 可以作为SIP代理 路由器 但OpenSIPS不仅仅是一个SIP代理 路由器 xff0c 因为它包含了应
  • Floyd判圈算法(龟兔赛跑算法, Floyd's cycle detection)及其证明

    问题 xff1a 如何检测一个链表是否有环 xff08 循环节 xff09 xff0c 如果有 xff0c 那么如何确定环的起点以及环的长度 空间要求 xff1a 不能存储所经过的的每一个点 举例 xff1a x 0 61 1 x 0 61
  • Ubuntu配置GPU版本pytorch环境(含NVIDIA驱动+Cuda+Cudnn)

    本文更新于2018年8月底 概述 步骤如下 xff1a 1 安装Ubuntu 2 安装NVIDIA 显卡驱动 2 安装NVIDIA Cuda 3 安装NVIDIA CuDNN 4 安装GPU版本的PyTorch 安装Ubuntu 系统版本选
  • PyTorch中的Dataset、Dataloader和_DataloaderIter

    Dataset Pytorch中数据集被抽象为一个抽象类torch utils data Dataset xff0c 所有的数据集都应该继承这个类 xff0c 并override以下两项 xff1a len xff1a 代表样本数量 len
  • 彻底搞懂Lab 颜色空间

    本文参考wikipedia xff0c 并加入了自己的理解 xff0c 有不对的地方多多指教 名称 在开始之前 xff0c 先明确一下Lab颜色空间 xff08 Lab color space xff09 的名字 xff1a Lab的全称是
  • MiniFly微型四轴学习与开发日志(五)——遥控器任务详解

    文章目录 radiolinkTask无线连接任务usblinkTxTask usb发送任务usblinkRxTask usb接收任务commanderTask飞控指令发送任务keyTask按键扫描任务displayTask显示任务confi
  • .与::的使用区别

    今天尝试编写了一个小的Windows应用程序 xff0c 在编写的过程中用到MessageBox函数 但是一直不正确 我当时尝试MessageBox 34 NULL 34 34 Alert 34 34 ERROR 34 MB OK xff0
  • Pytorch中的contiguous理解

    最近遇到这个函数 xff0c 但查的中文博客里的解释貌似不是很到位 xff0c 这里翻译一下stackoverflow上的回答并加上自己的理解 在pytorch中 xff0c 只有很少几个操作是不改变tensor的内容本身 xff0c 而只
  • 一文读懂GAN, pix2pix, CycleGAN和pix2pixHD

    本文翻译 总结自朱俊彦的线上报告 xff0c 主要讲了如何用机器学习生成图片 来源 xff1a Games2018 Webinar 64期 xff1a Siggraph 2018优秀博士论文报告 人员信息 主讲嘉宾 姓名 xff1a 朱俊彦
  • Pytorch中的optimizer

    与优化函数相关的部分在torch optim模块中 xff0c 其中包含了大部分现在已有的流行的优化方法 如何使用Optimizer 要想使用optimizer xff0c 需要创建一个optimizer 对象 xff0c 这个对象会保存当

随机推荐

  • 图像质量评价之结构相似性SSIM(上)

    本文总结归纳自论文 image quality assessment from error visibility to structural similarity 概述 这篇文章主要介绍对图像质量进行打分评价的一个很经典的指数 结构相似性
  • 图像质量评价之结构相似性SSIM(中)

    在上一篇文章中 xff0c 我们介绍了对图像质量进行评价的必要性 主观评价和客观评价的两种标准 xff0c 以及设计符合人类直觉的评价标准的困难性和重要性 本来这篇文章想把我们的主角SSIM讲完 xff0c 但是发现前面需要写的铺垫有点长h
  • CS231n lecture 9:各大经典网络 AlexNet/VGG/GoogleNet/ResNet(上)

    本文翻译总结自CS231n Lecture 9 本篇将深入介绍当前的应用和研究工作中最火的几个CNN网络架构 AlexNet VGGNet GoogleNet和ResNet xff0c 它们都在ImageNet分类任务中有很好的表现 另外
  • STM32c8t6干扰GPS信号的解决方式

    项目目的 xff1a stm32解析GPS报文 xff0c 显示在oled上 项目遇到的问题 xff1a GPS模块接收信号不良 问题表现 xff1a 1 GPS可以搜星 xff0c 户外大约20颗 xff0c 但是锁定不了卫星 2 GPS
  • Rplidar A2 激光雷达使用hector_slam进行建图

    手头上有一个Rplidar A2 激光雷达 xff0c 通过其进行slam建图 xff0c 如下 环境 xff1a 1 Rplidar A2 激光雷达 xff1b 2 笔记本电脑 xff1b 3 Ubuntu 16 04 4 ROS Kin
  • Oracle之常用内置函数

    1 Oracle内置函数 wm concat wm concat 函数是oracle中独有的 mysql中有一个group concat 函数 实现行转列功能 xff0c 即将查询出的某一列值使用逗号进行隔开拼接 xff0c 成为一条数据
  • RRT算法三维避障的MATLAB实现

    RRT算法又称为快速随机扩展数算法 xff0c 是一种普适路径规划算法 xff0c 为什么说是普适算法 xff0c 因为它什么样的苛刻的条件都会极大的可能性找到一条路径 但是这样的算法也往往会伴随缺点 xff1a 1 每次迭代都是在随机找点
  • MiniFly微型四轴学习与开发日志(六)——遥控器任务与系统框架

    文章目录 遥控器任务框架遥控器系统框架 遥控器任务框架 参数配置任务主要功能是保存参数 按键扫描任务主要功能是扫描按键 显示任务主要功能是显示界面 飞控指令发送任务主要功能是将采集摇杆电位器的 AD 值转换为姿态控制命令 xff0c 并以
  • Arduino串口发送与接收16进制数据(HEX)(数据乱码)-JDY-10M组网

    最近使用JDY 10M蓝牙组网 xff0c 需要Arduino收发数据 xff0c 将遇到的一些问题与最终解决方法分享给大家 xff0c 如果内容有问题 xff0c 还请大家指点 1 JDY 10M组网 关于如何JDY 10M如何组网网上介
  • 串口通信协议介绍

    串口通信协议介绍 空闲时 xff1a TX RX为高电平 xff0c 通讯时 xff1a 低电平为起始位 43 送数据位 xff08 从低到高 xff09 43 校验位 43 停止位 常用8N1 0 1 0 1 0 0 0 0 0 0 TX
  • ROS-基础(kinetic---melodic---noetic)

    学习资料参考 xff1a ROS机器人开发实践 胡春旭 目录 工作空间和功能包的创建集成开发环境的搭建话题和服务的实现方法ROS中的命名空间及解析方法ROS分布式通信的方法 热身 常用命令 命令作用catkin create pkg创建功能
  • linux下用多线程实现socket服务器和客户端的异步通信

    前面介绍了用select函数来实现socket的异步收发数据 xff0c 但是select函数也有一些缺陷 xff0c 要使socket能持续地通信 xff0c select必须不停地检测 xff0c 这样进程就会一直阻塞在这里 xff0c
  • SDN之NETCONF Call Home

    本文主要内容都来自于今年二月发布的RFC8071 NETCONF Call Home and RESTCONF Call Home xff0c 该RFC从2015年4月提出到最终发布一共修改了17个版本 xff0c 其间修改内容可以点击查看
  • Command ‘roscore‘ not found, but can be installed with: sudo apt install python-roslaunch

    Command roscore not found but can be installed with sudo apt install python roslaunch roscore 报错 Command 39 roscore 39 n
  • 按键精灵通过抓抓工具来获取坐标位置

    1 按键精灵通过抓抓工具找图 这里我就随便拿一款游戏来测试了 这是一款手游打开之后的界面 xff0c 要求我们点击确定继续现在要求使用脚本在帮我们点击这个确定按钮 我们新建一个脚本 然后打开按键精灵的抓抓工具 然后返回到按键精灵 xff0c
  • 在云服务器上部署项目(上)

    1 购买腾讯云主机 首先我们先了解一下云服务器的概念 云服务器 xff1a 高性能高稳定的云虚拟机 xff0c 可在云中提供弹性可调节的计算容量 xff0c 不让计算能束缚您的想象 xff1b 您可以轻松购买自定义配置的机型 xff0c 在
  • 在云服务器上部署项目(下)

    云服务器上部署项目 xff08 上 xff09 xff1a http blog csdn net gfd54gd5f46 article details 54331207 5 从网上下载jpress开源项目 流程 xff1a 下载jpres
  • 利用String类制作简单的网络爬虫

    网络爬虫 网络爬虫 xff08 又被称为网页蜘蛛 xff0c 网络机器人 xff0c 在FOAF社区中间 xff0c 更经常的称为网页追逐者 xff09 xff0c 是一种按照一定的规则 xff0c 自动地抓取万维网信息的程序或者脚本 另外
  • 令人头大的单片机延时----这里转一篇关于延时函数的文章看看

    标题 xff1a 转 关于nop 函数 2011 02 11 23 49 29 nop函数可以用来延时 xff0c 请问1个NOP延时多少时间 xff0c 怎么计算 xff1f 附一段说明 xff1a void nop void A NOP
  • Java----File类详解

    File类 Java中所有的目录都被当成File 对待 xff0c 它直接处理文件和文件系统 也就是说 xff0c File类没有指定信息怎样从文件读取或向文件存储 xff1b 它描述了文件本身的属性 File对象用来获取或处理与磁盘文件相