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.txt
D:\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:\1024
D:\1024
D:\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.txt
java
*/
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.txt
D:\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());
/*输出:false
true
*/
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());
/*输出:false
true
*/
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());
/*输出:false
true
*/
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());
/*输出:false
true
*/
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());
/*输出:false
true
*/
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());
/*输出:false
false
*/
创建功能
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());
/*输出:false
true
false
*/
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());
/*输出:false
true
true
*/
注意事项:如果你创建文件或者文件目录没有写盘符路径,那么默认在项目路径下
删除功能
public boolean delete():删除文件或者文件夹
注意事项:Java中的删除不走回收站,要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153922.html