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

JavaSE19——file文件类

file文件类

在 Java File 类是 java.io 包中唯一代表磁盘文件本身的对象
File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。

  1. File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
  2. File(String path, String name):path 是路径名,name 是文件名。
  3. File(File dir, String name):dir 是路径对象,name 是文件名。

File类的使用

1. 绝对路径 vs 相对路径

(1)绝对路径:是一个固定的路径,从盘符开始
(2)相对路径:是相对于某个位置开始

  • main()方法中的相对路径是相对于当前工程
  • 单元测试方法中的相对路径是相对于当前模块

2. 路径分隔符

(1) 路径中的每级目录之间用一个路径分隔符隔开。

(2)路径分隔符和系统有关:

  • windowsDOS系统默认使用"\"来表示
  • UNIX和URL使用"/"来表示

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

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

file常用api

方法名解释方法名解释
mkdir()创建此抽象路径名指定的目录exists()测试此抽象路径名表示的文件或目录是否存在
mkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录isDirectory()测试此抽象路径名表示的文件是否是一个目录
createNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件isFile()测试此抽象路径名表示的文件是否是一个标准文件
delete()删除此抽象路径名表示的文件或目录isHidden()测试此抽象路径名指定的文件是否是一个隐藏文件
canRead()测试应用程序是否可以读取此抽象路径名表示的文件getName()返回由此抽象路径名表示的文件或目录的名称
方法名解释方法名解释
getAbsolutePath()返回此抽象路径名的绝对路径名字符串getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
length()返回由此抽象路径名表示的文件的长度list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
renameTo(File dest)重新命名此抽象路径名表示的文件listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
canWrite()测试应用程序是否可以修改此抽象路径名表示的文件getPath()将此抽象路径名转换为一个路径名字符串

注意事项: Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。

案例演示1

    @Testpublic void test2(){File file1 = new File("hello.txt");File file2 = new File("d:\\io\\hi.txt");System.out.println(file1.getAbsolutePath());System.out.println(file1.getPath());System.out.println(file1.getName());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(new Date(file1.lastModified()));System.out.println();System.out.println(file2.getAbsolutePath());System.out.println(file2.getPath());System.out.println(file2.getName());System.out.println(file2.getParent());System.out.println(file2.length());System.out.println(file2.lastModified());}@Testpublic void test3(){File file = new File("D:\\workspace_idea1\\JavaSenior");String[] list = file.list();for(String s : list){System.out.println(s);}System.out.println();File[] files = file.listFiles();for(File f : files){System.out.println(f);}}

案例演示2

 @Testpublic void test4(){File file1 = new File("hello.txt");File file2 = new File("D:\\io\\hi.txt");boolean renameTo = file2.renameTo(file1);System.out.println(renameTo);}

案例演示3

  @Testpublic void test5(){File file1 = new File("hello.txt");file1 = new File("hello1.txt");System.out.println(file1.isDirectory());System.out.println(file1.isFile());System.out.println(file1.exists());System.out.println(file1.canRead());System.out.println(file1.canWrite());System.out.println(file1.isHidden());System.out.println();File file2 = new File("d:\\io");file2 = new File("d:\\io1");System.out.println(file2.isDirectory());System.out.println(file2.isFile());System.out.println(file2.exists());System.out.println(file2.canRead());System.out.println(file2.canWrite());System.out.println(file2.isHidden());}

案例演示4

  @Testpublic void test5(){File file1 = new File("hello.txt");file1 = new File("hello1.txt");System.out.println(file1.isDirectory());System.out.println(file1.isFile());System.out.println(file1.exists());System.out.println(file1.canRead());System.out.println(file1.canWrite());System.out.println(file1.isHidden());System.out.println();File file2 = new File("d:\\io");file2 = new File("d:\\io1");System.out.println(file2.isDirectory());System.out.println(file2.isFile());System.out.println(file2.exists());System.out.println(file2.canRead());System.out.println(file2.canWrite());System.out.println(file2.isHidden());}

获取文件属性

在 Java 中获取文件属性信息的第一步是先创建一个 File 类对象并指向一个已存在的文件, 然后调用表 1 中的方法进行操作。

例 1

假设有一个文件位于 C:\windows\notepad.exe

public class Test02 {public static void main(String[] args) {String path = "C:/windows/"; // 指定文件所在的目录File f = new File(path, "notepad.exe"); // 建立File变量,并设定由f变量引用System.out.println("C:\\windows\\notepad.exe文件信息如下:");System.out.println("============================================");System.out.println("文件长度:" + f.length() + "字节");System.out.println("文件或者目录:" + (f.isFile() ? "是文件" : "不是文件"));System.out.println("文件或者目录:" + (f.isDirectory() ? "是目录" : "不是目录"));System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取"));System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入"));System.out.println("是否隐藏:" + (f.isHidden() ? "是隐藏文件" : "不是隐藏文件"));System.out.println("最后修改日期:" + new Date(f.lastModified()));System.out.println("文件名称:" + f.getName());System.out.println("文件路径:" + f.getPath());System.out.println("绝对路径:" + f.getAbsolutePath());}
}

在上述代码中 File 类构造方法的第一个参数指定文件所在位置,这里使用C:/

C:\windows\notepad.exe文件信息如下:
============================================
文件长度:193536字节
文件或者目录:是文件
文件或者目录:不是目录
是否可读:可读取
是否可写:可写入
是否隐藏:不是隐藏文件
最后修改日期:Mon Dec 28 02:55:19 CST 2016
文件名称:notepad.exe
文件路径:C:\windows\notepad.exe
绝对路径:C:\windows\notepad.exe

创建和删除文件

File 类不仅可以获取已知文件的属性信息,还可以在指定路径创建文件,以及删除一个文件。创建文件需要调用 createNewFile() 方法,删除文件需要调用 delete() 方法。无论是创建还是删除文件通常都先调用 exists() 方法判断文件是否存在。

例 1

假设要在 C 盘上创建一个 test.txt 文件,程序启动时会检测该文件是否存在,如果不存在则创建;如果存在则删除它再创建。

public class Test03 {public static void main(String[] args) throws IOException {File f = new File("C:\\test.txt"); // 创建指向文件的File对象if (f.exists()) // 判断文件是否存在{f.delete(); // 存在则先删除}f.createNewFile(); // 再创建}
}

创建和删除目录

File 类除了对文件的创建和删除外,还可以创建和删除目录。创建目录需要调用 mkdir() 方法,删除目录需要调用 delete() 方法。无论是创建还是删除目录都可以调用 exists() 方法判断目录是否存在。

例 3

编写一个程序判断 C 盘根目录下是否存在 config 目录,如果存在则先删除再创建。实现代码如下:

public class Test04 {public static void main(String[] args) {String path = "C:/config/"; // 指定目录位置File f = new File(path); // 创建File对象if (f.exists()) {f.delete();}f.mkdir(); // 创建目录}
}

遍历目录

通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。File 类的 list() 方法提供了遍历目录功能

1. String[] list()

该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。
提示:但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter 过滤器的文件和目录,如果 filter 为 null,则接受所有名称。假设要遍历 C 盘根目录下的所有文件和目录,并显示文件或目录名称、类型及大小。使用 list() 方法的实现代码如下:

public class Test05 {public static void main(String[] args) {File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用System.out.println("文件名称\t\t文件类型\t\t文件大小");System.out.println("===================================================");String fileList[] = f.list(); // 调用不带参数的list()方法for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组System.out.print(fileList[i] + "\t\t");System.out.print((new File("C:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t");System.out.println((new File("C:/", fileList[i])).length() + "字节");}}
}
http://www.lryc.cn/news/213003.html

相关文章:

  • mongodb记录
  • Go语言:数组和切片
  • OPENCV 闭运算实验示例代码morphologyEx()函数
  • UE4 体积云制作 学习笔记
  • visual studio编译QtAV
  • 喜报!CACTER邮件安全网关荣获2023鲲鹏应用创新大赛广东赛区三等奖
  • Spark On Hive原理和配置
  • 驱动第十天
  • 工作中常用的git命令,千万不能忘
  • 计组之存储系统
  • 【Jenkins】新建任务FAQ
  • 生产环境使用boost::fiber
  • TSINGSEE青犀AI视频识别技术+危化安全生产智慧监管方案
  • 小程序request请求封装
  • Easy Javadoc插件的使用教程
  • 一篇文章让你弄懂Java中的方法
  • SAP MM学习笔记39 - MRP(资材所要量计划)
  • 总线类设备驱动——IIC
  • MES 的价值点之动态调度
  • dfs序及相关例题
  • python入门实战:爬取图片到本地
  • day02 矩阵 2023.10.26
  • 浪潮信息inMerge超融合 刷新全球vSAN架构虚拟化VMmark最佳成绩
  • 【【哈希应用】位图/布隆过滤器】
  • OpenCV学习笔记
  • idea 一键部署jar包
  • 16、SpringCloud -- 常见的接口防刷限流方式
  • Typora(morkdown编辑器)的安装包和安装教程
  • 服务器不稳定对网站有什么影响
  • py实现surf特征提取