Java文件IO操作:File类的相关内容

news2024/10/6 16:29:20

Java文件IO操作

  • 一、File类
    • 1.相对路径和绝对路径
    • 2.路径分隔符(同一路径下、多个路径下)
    • 3.实例化
    • 4.常见方法

一、File类

File类继承自Object类,实现了Serializable接口和Comparable接口;
File类属于java.io包;
File类是文件或者文件目录的一种抽象表示,即可使用File类的具体实例化对象表示文件或者文件目录;
File类只能对文件或文件目录进行一个抽象表示,可对其属性特征进行一定的描述,而如果想要对文件内容进行读写则需要借助IO流(具体地,将File对象作为IO流构造器参数);

1.相对路径和绝对路径

基于参考系不同,文件路径描述可分为相对路径和绝对路径

相对路径:相对于该文件当前位置的路径,比如./hello.java表示当前目录下的hello.java文件;
绝对路径:该文件在文件系统中的详细存储位置,比如C:\javase\hello.java,即包括文件所在根目录的路径;

2.路径分隔符(同一路径下、多个路径下)

在这里插入图片描述
1)同一路径下
需要注意,不同操作系统中路径分隔符是不同的,比如Linux下路径分隔符为斜杠/,而Windows系统中为反斜杠\,但在java语言中反斜杠用于特殊字符转义,故在java中Windows系统的路径分隔符为\\。由于Java主打“一次编译,到处运行”,故代码编写时若不统一路径分隔符会导致在不同的操作系统上运行程序时会出现异常。Java官方为解决该问题,在File类中提供一静态属性separator,自动获取当前操作系统的路径分隔符。

使用方法如下:

File.separator

举例:

C:\\javase\\hello.java可在代码中表示为:C:+File.separator+javase+File.separator+hello.java

File.separator为字符串类型,故使用“+”进行字符串拼接操作,这种操作看起来比较繁琐,故我们可直接统一使用斜杠/作为路径分隔符即可

2)多个路径下
此外,为了方便分隔多个路径,如“./xxx/yyy/c.txt;./xxx/yyy/d.txt”表示两个路径,File类提供静态属性pathSeparator进行此操作;
3)输出Windows系统中这四个属性的值:

System.out.println(File.pathSeparator);
System.out.println(File.pathSeparatorChar);
System.out.println(File.separator);
System.out.println(File.separatorChar);

对应输出:

;
;
\
\

3.实例化

提供以下四种构造器,用于创建File类对象:
在这里插入图片描述
1)File(String pathname)
pathname可为:

  • 具体文件的相对路径或绝对路径;
  • 文件目录的相对路径或绝对路径;
    需要注意,此处的相对路径必须是相对于该项目根目录而言,及src目录的父目录;
 // 其实此时File对象是一个抽象的路径表示
 // 使用路径字符串表示文件路径或文件目录
 File f1 = new File("./hello.txt");
 System.out.println(f1);
 File f2 = new File("F:\\IDEA_WorkSpace\\JavaIO\\JavaIO\\src\\com\\northsmile\\javaio\\hello.txt");
 System.out.println(f2);
 File f3 = new File("../demo");
 System.out.println(f3);
 File f4 = new File("F:\\IDEA_WorkSpace\\JavaIO\\JavaIO\\src\\com\\northsmile\\demo");
 System.out.println(f4);

对应输出:

.\hello.txt
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio\hello.txt
..\demo
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\demo

2)File(String parent,String child)

  • parent为父目录;
  • child为父目录下某子目录或文件所在子目录路径;
 // 使用父路径(父目录)及子路径(子目录/文件所在子目录路径)构建
 File f5 = new File("F:\\IDEA_WorkSpace\\JavaIO\\JavaIO\\src\\com", "northsmile");
 System.out.println(f5);
 File f6 = new File("F:\\IDEA_WorkSpace\\JavaIO\\JavaIO\\src\\com\\northsmile\\javaio", "hello.txt");
 System.out.println(f6);

对应输出:

F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio\hello.txt

3)File(File parent,String child)

  • parent为File类对象表示的父目录;
  • child为父目录下某子目录或文件所在子目录路径;
 // 使用File类对象表示父目录,以此结合子路径(子目录/文件所在子目录路径)构建
 File f7 = new File(f5, "javaio/hello.txt");
 System.out.println(f7);

 File f8 = new File(f5, "javaio");
 System.out.println(f8);

对应输出:

F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio\hello.txt
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio

4.常见方法

方法签名含义
public String getAbsolutePath()获取绝对路径
public String getPath()获取路径,如创建File对象时填写的pathname
public String getName()获取文件名或文件目录名
public String getParent()获取当前文件或目录的上级目录
public long length()获取文件长度,单位为字节数;不能用于获取目录的长度
public long lastModified()获该文件或目录最近一次修改时间,单位为毫秒
public String[] list()获取指定目录下所有文件名或子目录的名称数组(只有文件名或子目录名)
public File[] listFiles()获取指定目录下所有文件名或子目录的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 boolean createNewFile()如果指定文件不存在,则自动创建该文件
public boolean mkdir()如果指定目录不存在,则自动创建指定目录。前提是该目录的父目录存在。
public boolean mkdirs()如果指定目录不存在,则自动创建指定目录。如果其父目录不存在,会自动为其创建父目录
public boolean delete()删除指定文件或目录(只能删除空目录)

示例1:
如果指定路径在硬盘中真实存在,则在创建File对象时,则会对其属性进行具体赋值,比如文件长度等;反之如果不存在,则保持默认值。

// 针对文件
File file = new File("F:\\IDEA_WorkSpace\\JavaIO\\JavaIO\\src\\com\\northsmile\\javaio\\hello.txt");
System.out.println(file.getAbsolutePath());
System.out.println(file.getPath());
System.out.println(file.getName());
System.out.println(file.getParent());
System.out.println(file.length());
System.out.println(file.lastModified());

System.out.println("---------------------------");
// 针对文件目录
File dir = new File("F:\\IDEA_WorkSpace\\JavaIO\\JavaIO\\src\\com\\northsmile");
System.out.println(dir.getAbsolutePath());
System.out.println(dir.getPath());
System.out.println(dir.getName());
System.out.println(dir.getParent());
System.out.println(dir.lastModified());
System.out.println("---------------------------");
String[] fileNames=dir.list();
for (String name:fileNames){
    System.out.println(name);
}
System.out.println("---------------------------");
File[] files=dir.listFiles();
for (File f:files){
    System.out.println(f);
}

输出结果:

F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio\hello.txt
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio\hello.txt
hello.txt
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio
26
1677138552240
---------------------------
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile
northsmile
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com
1677138472477
---------------------------
demo
javaio
---------------------------
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\demo
F:\IDEA_WorkSpace\JavaIO\JavaIO\src\com\northsmile\javaio

Process finished with exit code 0

示例2:

// 重命名
File file1=new File("hello.txt");
File file2=new File("hi.txt");
System.out.println(file1.renameTo(file2));

renameTo表示将指定路径重命名为目标路径,重命名成功有两个前提:

  • 源路径存在,目标路径不存在;
  • 源路径-目标路径有两种对应形式:文件-文件或文件目录-文件目录,即可对文件或文件目录进行重命名;

示例3:

 File file=new File("hello.txt");
 System.out.println(file.isDirectory());
 System.out.println(file.isFile());
 System.out.println(file.exists());
 System.out.println(file.canRead());
 System.out.println(file.canWrite());
 System.out.println(file.isHidden());

输出结果:

false
true
true
true
true
false

示例4:

 File file=new File("hi.txt");
 if (!file.exists()){  // 如果该文件不存在
     System.out.println("文件创建成功:"+file.createNewFile());
 }else{
     System.out.println("文件已存在,即将删除该文件。");
     System.out.println("删除成功:"+file.delete());
 }
File dir = new File("./testMkdir/demo");
if (!dir.exists()){
    if (dir.mkdir()){
        System.out.println("目录创建成功");
    }else{
        System.out.println("目录创建失败");
    }

}else{
    System.out.println("删除该空目录:"+dir.delete());
}
        File dir = new File("./testMkdir/demo");
        if (!dir.exists()){
            if (dir.mkdirs()){
                System.out.println("目录创建成功");
            }else{
                System.out.println("目录创建失败");
            }

        }else{
            System.out.println("删除该空目录:"+dir.delete());
        }

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

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

相关文章

高通平台开发系列讲解(WIFI篇)802.11 基本概念

文章目录 一、WLAN概述二、802.11发展历程三、802.11基本概念沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将基于高通平台介绍802.11基本概念。 一、WLAN概述 WLAN是Wireless Local Area Network的简称,指应用无线通信技术将计算机设备互联起来,构成可以互相通…

Python计算 -- 内附蓝桥题:相乘,三角回文数

计算 ~~不定时更新🎃,上次更新:2023/02/23 🗡常用函数(方法) 1. 求一个整数的最末位 举个栗子🌰 n int(input()) end n % 10蓝桥例题1 - 相乘✖️ 题目描述 本题为填空题,…

【python学习笔记】:输出与输入

01 输出方式 表达式语句、print()函数和使用文件对象的write()方法。 02 输出形式 格式化输出str.format()函数、转成字符串可以使用repr()或str()函数来实现。 (1)repr():产生一个解释器易读的表达形式,便于字符串的拼接。 例:输出平方与…

OpenGL超级宝典学习笔记:着色器存储区块、原子内存操作、内存屏障

前言 本篇在讲什么 本篇为蓝宝书学习笔记 着色器存储区块 原子内存操作 内存屏障 本篇适合什么 适合初学Open的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重…

五月天演唱会门票开售,retry了一小时也没re进去!到底是什么高科技在作祟?!

等待了三年,大型线下演唱会终于回归了!前段时间,文化和旅游部市场管理司发布通知称,自2023年2月16日起,各地文化和旅游行政部门恢复对涉港澳台营业性演出的受理和审批。据中国演出行业协会在业内调研了解,周…

Python Pytorch开发环境搭建(Windows和Ubuntu)

Python Pytorch开发环境搭建(Windows和Ubuntu) 目录 Pytorch开发环境搭建 1. 安装cuda cudnn (1)Windows安装方法 (2)Ubuntu18.04安装方法 2. 安装Python(推荐使用Anaconda) (1)Windows安装方法 (2)Ubuntu18.04安装方法 3. Pytorch安装 4. 安装…

渗透测试之端口探测实验

渗透测试之端口探测实验实验目的一、实验原理1.1 端口1.2 服务二、实验环境2.1 操作机器2.2 实验工具三、实验步骤1. 使用netstat手动探测指定服务2. 使用namp工具进行端口扫描2. 使用ssh命令总结实验目的 了解端口、服务的基本概念熟悉手工探测方式netstat命令的使用掌握扫描…

分享app的测试技巧

前言 今天笔者想和大家来唠唠app测试,现在的app有非常的多,这些app都是需要经过测试之后才能发布到应用市场中,app已经成为了我们日常生活中不可或缺的一部分了,但它的功能必须强大,才能受到消费者的重视,…

Python开发——做一个简单的【表白墙】网站

前言 大家早好、午好、晚好吖 ❤ ~ 今天我们要用Python做Web开发,做一个简单的【表白墙】网站。 众所周知表白墙的功能普遍更多的是发布找人,失物招领, 还是一个大家可以跟自己喜欢的人公开表白的平台 Tornado框架简单介绍 在Python当中&…

Go全栈学习(一)基础语法

Go语言基础语法 文章目录Go语言基础语法注释变量变量的定义变量的交换理解变量(内存地址)匿名变量变量的作用域常量2023.2.4日 总结// 关于Goland 中 执行的问题// 1、包下执行 (一个 main 函数来执行,如果有多个,无法…

【Elasticsearch】安装配置与使用

一、下载与安装Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch#ga-release前端管理界面:https://github.com/mobz/elasticsearch-head这两个文件都是解压即可。二、配置与启动1.elasticsearch6以上的版本已经内置jdk&#xf…

跑步选什么耳机比较好、最好用的五款跑步无线耳机推荐

春节过后,全国各地马拉松蜂拥而起,跑友们憋了这么久终于可以参赛了,不过无论是比赛还是训练,在跑步的过程中都离不开音乐的加持,所以是时候为自己选一款好用的运动耳机了!说实话挑选一款适合的运动耳机还真…

mac下ElasticSearch 集群搭建,使用Kibana配置和管理集群

Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群,三个Master节点最多只能故障一台Master节点,如果故障两个Master节点,Elasticsearch将无法组成集群.会报错,Kibana也无法启动,因为…

Python入门(未完待续。。。)

认识python 解释型(写完直接运行)、面向对象的高级编程语言;开源免费、支持交互式、可跨平台移植的脚本语言;优点:开源、易于维护、可移植、简单优雅、功能强大、可扩展、可移植;缺点:解释型→运…

【IoT】无线温度采集系统设计

随着工业和农业的发展,无线采集系统的应用范围变得更加广泛,对无线数据采集系统的测量参数也越来越多,精准度也越来越高。目前国内外有很多的无线温度采集系统,但很多的无线温度采集系统存在很多问题,如采集速度和稳定…

docker网络基

本文简单介绍下,容器之间的网络访问、容器与宿主机之间的网络访问、宿主机上有哪些网络接口。lolocal的简写,本地回环地址,127.0.0.1,它代表本地虚拟设备接口,默认被看作是永远不会宕掉的接口eth0ethernet的简写&#…

OraDump导出套件

OraDump导出套件 只需单击几下即可将数据从Oracle转储文件导出到流行的数据库和格式。 OraDump Export Kit是一个将数据从Oracle转储文件导出到流行数据库和格式的软件包。该产品具有高性能,因为它直接读取转储文件。命令行支持允许编写脚本、自动化和安排转换过程。…

结构建模设计——Solidworks软件之装配体操作基本总结三(高级配合、机械配合、快捷菜单功能)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

纹理开启Mipmap导致压缩失败的问题

1)纹理开启Mipmap导致压缩失败的问题 ​2)使用TextMeshPro能否避免使用Resources文件夹 3)用透视摄像机去分层管理UI的优势和好处 4)Houdini中切线空间向量怎么在Unity Shader还原出原向量 这是第325篇UWA技术知识分享的推送&…

多项新规重磅发布,微信视频号近期需要关注这几点

随着功能的完善和内容生态的丰富,视频号逐渐放慢产品更新频率,将重点放到商家准入标准、创作者扶持计划上来,本期我们将更侧重解读平台新规,帮助大家了解行业动向,把握最新趋势。01 视频号小店结算规则修订 取消48小时…