当前位置: 首页 > news >正文

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

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\javaioProcess 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.lryc.cn/news/18142.html

相关文章:

  • 竣达技术 | 巡检触摸屏配合电池柜,电池安全放首位!
  • 什么是自动化运维?为什么选择Python做自动化运维?
  • 【经验】移植环境requirement时报错
  • 计算机专业要考什么证书?
  • 一个列表引发的思考(简单版)
  • Protobuf 学习简记(三)Unity C#中的序列化与反序列化
  • Flask入门(10):Flask使用SQLAlchemy
  • 我的 System Verilog 学习记录(4)
  • Git : 本地分支与远程分支的映射关系
  • 运维必看|跨国公司几千员工稳定访问Office365,怎么实现?
  • Python GDAL读取栅格数据并基于质量评估波段QA对指定数据加以筛选掩膜
  • Vue3:有关v-model的用法
  • CF1692C Where‘s the Bishop? 题解
  • Jenkins集成Allure报告
  • 【数据结构】AVL树
  • 这一次我不再低调,老板法拉利的车牌有我的汗水
  • 通过连接另一个数组的子数组得到一个数组
  • 公派访问学者的申请条件
  • 多点电容触摸屏实验
  • 【算法与数据结构(C语言)】栈和队列
  • Uni-app使用vant和uview组件
  • 2023年PMP考试应该注意些什么?
  • selenium环境安装及使用
  • 高性能低功耗4口高速USB2.0 HUB 完美替代FE1.1S和FE8.1
  • Go全栈学习(一)基础语法
  • centos7搭建svn配置
  • 趣味三角——第12章——tanx
  • Java - 数据结构,栈
  • 某餐厅系统网络故障分析案例
  • 华为OD机试题,用 Java 解【密室逃生游戏】问题