一文打通File类

news2024/11/25 13:46:16

目录

基本概述

常用构造器

构造方法

 路径分隔符

常用方法 

File类的获取功能

 File类的重命名功能

File类的判断功能

File类的创建功能

File类的删除功能


在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。

基本概述

  • java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
  • 如果需要访问文件内容本身,则需要使用输入/输出流。
  • 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
  • File对象可以作为参数传递给流的构造器

常用构造器

构造方法

public File(String pathname)

以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果
pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
绝对路径:是一个固定的路径,从盘符开始
相对路径:是相对于某个位置开始

public File(String parent,String child)

以parent为父路径,child为子路径创建File对象。

public File(File parent,String child)

根据一个父File对象和子文件路径创建File对象

 路径分隔符

路径中的每级目录之间用一个路径分隔符隔开。
路径分隔符和系统有关:

  • windows和DOS系统默认使用“\”来表示
  • UNIX和URL使用“/”来表示

Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File类提供了一个常量:public static final String separator。根据操作系统,动态的提供分隔符。
举例:

File file1 = new File("d:\\atguigu\\info.txt");
File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt");
File file3 = new File("d:/atguigu");

常用方法 

File类的获取功能

public String getAbsolutePath():获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组

public static void test1(){
        File file1 = new File(".\\test1.txt");
        File file2 = new File("D:\\workspace\\test\\test1.txt");
        System.out.println("-----默认相对路径:取得路径不同------");
        System.out.println(file1.getPath());
        System.out.println(file1.getAbsolutePath());
        System.out.println("-----默认绝对路径:取得路径相同------");
        System.out.println(file2.getPath());
        System.out.println(file2.getAbsolutePath());
        
    }

-----默认相对路径:取得路径不同------
.\test1.txt
D:\workspace\test\.\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt 

 File类的重命名功能

public boolean renameTo(File dest):把文件重命名为指定的文件路径

File类的判断功能

public boolean isDirectory():判断是否是文件目录
public boolean isFile() :判断是否是文件
public boolean exists() :判断是否存在
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏

public class DirList {
    public static void main(String args[]) {
        String dirname = "/java";
        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 /java

bin is a directory

ib is a directory demo is a directory t

est.txt is a file

README is a file

index.html is a file

include is a directory

File类的创建功能

public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
public boolean mkdir() :方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。

public class CreateDir {
    public static void main(String[] args) {
        String dirname = "/tmp/user/java/bin";
        File d = new File(dirname);
        // 现在创建目录
        d.mkdirs();
    }
}

File类的删除功能

public boolean delete():删除文件或者文件夹
删除注意事项:
Java中的删除不走回收站。
需要注意的是当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。

测试目录结构:

public class DeleteFileDemo {
    public static void main(String[] args) {
        // 这里修改为自己的测试目录
        File folder = new File("/tmp/java/");
        deleteFolder(folder);
    }
 
    // 删除文件及目录
    public static void deleteFolder(File folder) {
        File[] files = folder.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    deleteFolder(f);
                } else {
                    f.delete();
                }
            }
        }
        folder.delete();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一大波智能AI对话机器人来袭——一共20个可以白嫖的ChatGPT网站供您使用,总有一款能打开~

文心一言https://yiyan.baidu.com 小莓用AIhttps://ai.usesless.com/chat NotGPTNotGPT,AI问答,AI绘画,AI协助提升工作效率https://chat2.pypig.com https://chatgptmirror.comhttps://chatgptmirror.com 超大模型AI对话https://chat.ktoai.com ChatGPTYour personal ChatGPT B…

使用nsenter检查docker网络

文章目录 一 环境准备二 需求三 解决 一 环境准备 虚拟机IP&#xff1a;10.0.0.100 拉取的三个镜像&#xff0c;镜像名称与ID如下&#xff1a; [rootcanway01 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED …

flink 解决udf重复调用的问题(亲测有效)

问题 针对如图的情况,udf会被调用4次,如果udf是计算型的,后果很严重。接下来介绍一下解决的办法。 更改底层源码 大神的博客继续往下看,有测试过程测试UDF 1.写两个udf public class Udf1 extends ScalarFunction {public long eval(long ordernumber

【宝塔建站】Ubuntu下使用宝塔面板一键搭建Z-Blog个人博客

文章目录 1.前言2.网站搭建2.1. 网页下载和安装2.2.网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测试5.结语 1.前言 Ubuntu系统作…

CyberLink的照片编辑软件PhotoDirector Ultra 14.5版本在win10系统的下载与安装配置教程

目录 前言一、PhotoDirector Ultra安装二、使用配置总结 前言 PhotoDirector Ultra是由CyberLink公司开发的一款专业的照片编辑工具&#xff0c;旨在为用户提供全面的照片后期制作和编辑解决方案。其具有多种编辑工具&#xff0c;例如调整曝光、色彩、对比度和锐度等参数&…

深入解析Linux C/C++ 编程中的内存泄漏问题

深入解析Linux C/C 编程中的内存泄漏问题 I. 前言 (Introduction)1.1 文章目的与内容概述 (Purpose and Overview of the Content)1.2 重要性和实用性的说明 (Significance and Practicality Explanation)1.3 数据结构与内存泄漏的基本概念 (Basic Concepts of Data Structure …

python视角对比其他编程语言

引用《编程小白的第一本Python入门书》

ArcMap:第一届全国大学生GIS应用技能大赛(滁州学院)详解-上午题

目录 01 上午题 1.1 题目 1.2 数据 1.2.1 如何添加比赛数据&#xff1f; 1.2.2 比赛数据展示 1.3 思路 1.3.1 坐标系问题 1.4 实操 1.4.1 建立空间数据库和比赛数据导入 1.4.2 坐标系问题解决 1.4.3 要素的订正 1.4.4 数据入库和符号化管理&#xff1b; 1.4.5 其…

手撕链式二叉树(二)—【C语言】

链式二叉树&#xff08;一&#xff09; http://t.csdn.cn/HWu6E 目录 1. 二叉树找值为x的节点 代码实现分析 代码实现 递归展开图 2. 求二叉树层数 代码思路分析 代码实现 3. 二叉树的销毁 代码思路分析 代码实现 运行结果 4. 二叉树的一些OJ题目 1. 单值…

【云原生•监控】Categraf大一统的监控数据采集器

【云原生•监控】Categraf大一统的监控数据采集器 前言 「笔者已经在公有云上搭建了一套临时环境&#xff0c;可以先登录体验下&#xff1a;」 http://124.222.45.207:17000/login 账号&#xff1a;root/root.2020 简介 Categraf 是一个监控采集 Agent&#xff0c;类似 Telegra…

KDHL-200A高压开关电阻测量仪技术参数

一、产品概述 KDHL-200A高压开关电阻测量仪操作面板采用人体工学设计&#xff0c;符合操作习惯&#xff0c;采用高频开关电源和数字电路技术&#xff0c;适用于开关控制设备回路电阻的测量。 测试电流采用国家标准推荐的直流100A&#xff0c;可在直流100A的情况下直接测得回路…

媒体公关是什么?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 常常有很多朋友问我&#xff0c;胡老师&#xff0c;你具体是从事什么行业的&#xff0c;能为我们做些什么呢&#xff0c;其实51媒体网&#xff08;51 Media PR&#xff09;是专注于媒体公…

员工每天带薪拉屎3至6小时,对谁更不利?

#员工每天带薪拉屎3至6小时被解雇# 事件摘要&#xff1a; 据劳动报报道&#xff0c;2015年7月开始&#xff0c;某公司员工王某每天在厕所停留的时间为3至6个小时。记录显示&#xff0c;自2015年9月7日至17日&#xff08;9月13日除外&#xff09;王某每天分二至三次&#xff0…

第51讲:Python定义函数时使用*定义个数可变的位置形参

文章目录 1.个数可变的位置形参概念2.定义函数时定义一个个数可变的位置形参3.个数可变的形参通常位于函数中的最后一个形参 1.个数可变的位置形参概念 定义函数时&#xff0c;如果无法事先确定传递的位置实参的个数&#xff0c;在这种情况下&#xff0c;可以将形参定义为个数…

AutoAI 2023峰会观察:数据驱动变革,迎接智驾未来

在驶向智驾未来的科技之路上&#xff0c;数据正在发挥什么样的重要作用&#xff1f; AutoAI 2023中国峰会盛大召开 近日&#xff0c;AutoAI 2023第六届无人驾驶及智能驾舱中国峰会在上海盛大召开&#xff0c;AutoSec 7周年年会暨中国汽车网络安全与数据安全合规峰会也于同期一起…

老手机安装apk包时出现[解析包时出现错误]

问题 在老手机上安装打包好的apk时出现了“解析包时出现错误” 环境 手机 型号&#xff1a;华为、荣耀Android版本&#xff1a; 6.0 开发环境 gradle 6.9.2Android Studio 4.2.1minSdkVersion 23 解决 打包时只使用V1签名。 总结分析 因为Android7以上&#xff0c;引入使…

气氛热烈 金句频出!一文看尽网易科技首期AIGC创新社沙龙

GPT狂飙&#xff0c;AI突进。 无数人的热情被点燃&#xff0c;振臂高呼“AI的iPhone时刻已经到来”。面对时代新机遇&#xff0c;创业者闻风而动&#xff0c;投资人竞相追逐&#xff0c;巨头纷纷入局。未来会怎样&#xff1f;没人能给出确切的答案。 但是&#xff0c;几乎已成共…

《嵌入式系统开发实践》实验三 进程通信

一、 实验目的 掌握无名管道与有名管道的进程通信&#xff1b;掌握消息队列的读写操作&#xff1b;掌握共享内存的通信机制。 二、 实验任务与要求 管道读写程序的编写与应用&#xff1b;消息队列的发送和接收程序的编写和应用&#xff1b;共享内存的创建、连接和分离编程和…

ptp4l测试-LinuxPTP\ptp4l配置与问题排查

目录 一、前言 1.1 什么是ptp4l 1.2 描述 1.3 官网连接 1.4 目的 1.5 平台 二、 平台必要软件 2.1 linux物理机 2.2 imx6ull开发板 三、检查硬件是否支持 3.1 ifconfig查看当前网卡的名称 3.2 ethtool检查驱动和网卡是否支持 四、开启ptp4l服务 4.1 方法一&#x…

Windows远程访问本地 jupyter notebook服务

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#…