【Java-----File类详解】
创始人
2024-01-16 22:04:04
0

File类概述

Java.io.File类是文件和文件目录路径的抽象表示形式,与平台无关。文件和目录是可以通过File封装成对象的,对于File而言,其封装的并不是一个真实存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的,将来是要通过具体的操作把这个路径的内容转换为具体存在的。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

File类中涉及到关于文件或文件目录的创建,删除,重命名,修改时间,文件大小等方法,并未涉及到写入或读取文件内容的操作,如果需要读取或写入文件内容,必须使用IO流来完成。File对象可以作为参数传递给流的构造器,指明读取或写入的终点。

构造方法

public File(String pathname):以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。示例代码如下:

File file1=new File("hello.txt");
File file2=new File("D:\\java\\javatest.txt");
System.out.println(file1);
System.out.println(file2);
/*输出:hello.txtD:\java\javatest.txt
*/

public File(String parent,String child):以parent为父路径,child为子路径创建File对象。示例代码如下:

File file3=new File("D:\\java","hellojava");
System.out.println(file3);
//输出:D:\java\hellojava

public File(File parent,String child):根据一个父File对象和子文件路径创建File对象。示例代码如下:

File file4=new File(file3,"hello.txt");
System.out.println(file4);
//输出:D:\java\hellojava\hello.txt

File类使用的注意事项

1  绝对路径和相对路径

  • 绝对路径:是一个固定的路径,从盘符开始,是一个完整的路径
  • 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用

2  路径分隔符

  • 路径中的每级目录之间用一个路径分隔符隔开
  • 路径分隔符和系统有关:windows和DOS系统默认使用"\"来表示,UNIX和URL使用"/"来表示,linux使用"//"来表示
  • Java程序支持跨平台运行,因此路径分隔符要慎用,为了解决这个隐患,File类提供了一个常量:public static final String separator根据操作系统动态的提供分隔符
File file5=new File("D:"+File.separator+"1024");
System.out.println(file5);
File file6=new File("D:\\1024");
System.out.println(file6);
File file7=new File("D:/1024");
System.out.println(file7);
/*输出:D:\1024D:\1024D:\1024
*/

静态成员变量

  • public static final String pathSeparator:系统中多个路径的分隔符
  • public static final String separator:系统中一个路径中多个名称之间的分隔符

常用方法

获取功能

public String getAbsolutePath():获取绝对路径

File file1=new File("hello.txt");
System.out.println(file1.getAbsolutePath());
//输出:E:\Java workplace\22-6-13\hello.txt

public String getPath():获取路径

File file1=new File("hello.txt");
System.out.println(file1.getPath());
//输出:hello.txt

public String getName():获取名称

File file2=new File("D:\\java\\javatest.txt");
System.out.println(file2.getName());
//输出:javatest.txt

public String getParent():获取上层文件目录路径,若无则返回null

File file2=new File("D:\\java\\javatest.txt");
System.out.println(file2.getParent());
//输出:D:\java

public long length():获取文件长度(即:字节数),不能获取目录的长度

File file2=new File("D:\\java\\javatest.txt");
System.out.println(file2.length());
//输出:0

public long lastModified():获取最后一次的修改时间,毫秒值

File file2=new File("D:\\java\\javatest.txt");
System.out.println(file2.lastModified());
//输出:0

public String[] list():获取指定目录下的所有文件或者文件目录的字符串数组

File file2=new File("D:\\aaa");
String[] list=file2.list();
for(String s:list) {System.out.println(s);
}
/*输出:helloworld.txtjava
*/

public File[] listFiles():获取指定目录下的所有文件或者文件目录的File对象数组

File file2=new File("D:\\aaa");
File[] list=file2.listFiles();
for(File f:list) {System.out.println(f);
}
/*输出:D:\aaa\helloworld.txtD:\aaa\java
*/

重命名功能

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

File file1=new File("D:\\aaa\\hello.txt");
File file3=new File("D:\\aaa","hellojava.txt");
System.out.println(file1.renameTo(file3));
//输出:false

判断功能

public boolean isDirectory():判断是否是文件目录

File file1=new File("hello.txt");
File file2=new File("D:\\aaa");
System.out.println(file1.isDirectory());
System.out.println(file2.isDirectory());
/*输出:falsetrue
*/

public boolean isFile():判断是否是文件

File file1=new File("hello.txt");
File file2=new File("D:\\aaa\\hellojava.txt");
System.out.println(file1.isFile());
System.out.println(file2.isFile());
/*输出:falsetrue
*/

public boolean exists():判断是否存在

File file1=new File("hello.txt");
File file2=new File("D:\\aaa\\hellojava.txt");
System.out.println(file1.exists());
System.out.println(file2.exists());
/*输出:falsetrue
*/

public boolean canRead():判断是否可读

File file1=new File("hello.txt");
File file2=new File("D:\\aaa\\hellojava.txt");
System.out.println(file1.canRead());
System.out.println(file2.canRead());
/*输出:falsetrue
*/

public boolean canWrite():判断是否可写

File file1=new File("hello.txt");
File file2=new File("D:\\aaa\\hellojava.txt");
System.out.println(file1.canWrite());
System.out.println(file2.canWrite());
/*输出:falsetrue
*/

public boolean isHidden():判断是否隐藏

File file1=new File("hello.txt");
File file2=new File("D:\\aaa\\hellojava.txt");
System.out.println(file1.isHidden());
System.out.println(file2.isHidden());
/*输出:falsefalse
*/

创建功能

public boolean createNewFile():创建文件,若文件存在,则不创建,返回false

File file1=new File("D:\\aaa\\hellojava.txt");//D盘中已有该文件
File file2=new File("D:\\aaa\\helloworld.txt");
if(!file1.exists()) {try {boolean flag1=file1.createNewFile();System.out.println(flag1?"创建成功":"创建失败");} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}else {boolean flag2=file1.delete();System.out.println(flag2?"删除成功":"删除失败");
}
if(!file2.exists()) {try {boolean flag3=file1.createNewFile();System.out.println(flag3?"创建成功":"创建失败");} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}else {boolean flag4=file1.delete();System.out.println(flag4?"删除成功":"删除失败");
}
/*输出:删除成功创建成功
*/

public boolean mkdir():创建文件目录,如果此文件目录存在,就不创建了,如果此目录文件的上层目录不存在,也不创建

File file1=new File("D:\\aaa");//已存在
File file2=new File("D:\\bbb");//不存在
File file3=new File("D:\\ccc\\java");//不存在,且上层目录也不存在
System.out.println(file1.mkdir());
System.out.println(file2.mkdir());
System.out.println(file3.mkdir());
/*输出:falsetruefalse
*/

public boolean mkdirs():创建文件目录,如果此文件目录存在,就不创建了,如果此目录文件的上层目录不存在,则一并创建

File file1=new File("D:\\aaa");//已存在
File file2=new File("D:\\bbb");//不存在
File file3=new File("D:\\ccc\\java");//不存在,且上层目录也不存在
System.out.println(file1.mkdirs());
System.out.println(file2.mkdirs());
System.out.println(file3.mkdirs());
/*输出:falsetruetrue
*/

注意事项:如果你创建文件或者文件目录没有写盘符路径,那么默认在项目路径下

删除功能

public boolean delete():删除文件或者文件夹

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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...