62. File类常用方法
为了怕混淆,先说明一些下面要出现的名词意思:
例如:D:\\新建文件夹 (2)\\a.txt 和 D:\\新建文件夹 (2)\\aaaa
D:\\新建文件夹 (2) 父路径
a.txt 子文件
aaaa 子文件夹
创建:
创建子文件:
createNewFile() 如果在指定位置创建一个空子文件,如果在此父路径已存在此子文件返回false,如果没有那么创建一个,并返回true
public boolean createNewFile()
throws IOException
创建子文件夹:
mkdir()
根据所给的父路径创建所给父路径中不存在的子文件夹,成功true,失败false
注意:
1.不能创建多个子文件夹,也就是所给的路径只有一个子文件夹是不存在的
2.只能创建文件夹,不能创建文件,就算给a.txt,他也是a.txt文件夹
mkdirs()
根据所给的父路径创建所给父路径中所有不存在的子文件夹,成功true,失败false
注意:
1.能创建多个文件夹
2.只能创建文件夹,不能创建文件,就算给a.txt,他也是a.txt文件夹
renameTo(File dest)
操作子文件夹:
如果调用者的父路径和参数的父路径一样,那么就是调用者的子文件夹名字覆盖原文件夹名字并返回true(重命名)
如果调用者的父路径和参数的父路径不一样,那么会操作失败返回false(剪切不能操作文件夹)
操作子文件:
如果调用者的父路径和父参数的路径一样,那么就是重命名
如果调用者的父路径和参数的父路径不一样,那么就是剪切(注意:如果名字也不相同,那么就是重命名加剪切)
删除:
delete()
删除此抽象父路径名表示的空子文件夹或者子文件,成功true失败false
deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件夹或文件。无返回值
注意:第一个删除是执行了删除语句后,立刻会删除。而第二个是执行了删除语句不会被删除,只有当jvm退出时才会删除
例如:网易音乐中我们可以试听(缓存),试听的时候文件是下载下来了,当我们退出网易云后,我们试听的文件会删除,
这样是为了保证内存不会被浪费,打开网易云的时候不会加载这么多数据,启动不会变慢
获取:
抽象路径要父路径+子文件或者子文件夹(父路径可以不真实存在):
getName() 返回由此抽象路径名表示的文件夹或文件的名称。(返回子文件夹或者子文件名)
getParent() 返回此抽象路径名表示的父路径名;如果此路径名没有指定父路径,则返回 null。
getPath() 返回此抽象路径名的绝对路径名字符串(返回父路径名+子文件或者子文件夹名)。
getAbsolutePath() 返回此抽象路径名的绝对路径名字符串(返回父路径名+子文件或者子文件夹名)。
lastModified() 如果在此路径下存在此文件或者文件夹,那么返回的是最后一次修改的时间,如果不存在那么返回的是0
length() 返回由此抽象路径名表示的子文件大小(字节),如果此路径下存在此子文件,那么返回子文件的字节大小,如果不存在那么返回0
抽象路径要父路径(并且父路径要真实存在,否者会报空指针异常):
不可以接受过滤器:
list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的子文件名和子文件夹名
listFiles() 返回一个File类型的数组,这些字符串指定此抽象路径名表示的父路径+子文件和子文件夹
listRoots() 返回一个File类型的数组,列出可用的文件系统根。(比如:盘符)
可以接受过滤器:
list(FilenameFilter filter)接受一个过滤器并返回字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是子文件或者子文件夹名)
listFiles(FileFilter filter)接受一个过滤器并返回字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是父路径+子文件或者子文件夹名)
自定义过滤器:
创建一个类并实现FilenameFilter接口中的accept方法,accept方法中写过滤代码
例如:
class MyFilter implements FilenameFilter{
public boolean accept(File dir, String name){
//过滤代码
}
}
dir : 表示父路径
name: 表示子文件或者子文件夹
下面是一些实例:
创建:
public class Demo2 {
public static void main(String[] args) throws IOException {
//在D:\\新建文件夹 (2)下创建一个a.txt的文件
File file = new File("D:\\新建文件夹 (2)\\a.txt");
System.out.println(file.createNewFile()); //在D:\\新建文件夹 (2)路径下创建一个bb的文件夹
File file1 = new File("D:\\新建文件夹 (2)\\bb");
System.out.println(file1.mkdir()); //在D:\\新建文件夹 (2)路径下创建一个aa\\bb\\cc的多级文件夹,
File file2 = new File("D:\\新建文件夹 (2)\\aa\\bb\\cc");
System.out.println(file2.mkdirs()); //修改D:\\新建文件夹 (2)路径下的bb文件夹名字为bbbbbbb
File file3 = new File("D:\\新建文件夹 (2)\\bbbbbbb");
System.out.println(file1.renameTo(file3)); //把D:\\新建文件夹 (2)路径下bbbbbbb文件夹剪切到D:\\目录下
File file4 = new File("D:\\bbbbbbb");
System.out.println(file1.renameTo(file4)); //把D:\\新建文件夹 (2)路径下a.txt文件重命名为aaaa.txt
File file5 = new File("D:\\新建文件夹 (2)\\aaaa.txt");
System.out.println(file.renameTo(file5)); //把D:\\新建文件夹 (2)路径下aaaa.txt文件剪切到D:\\目录下
File file6 = new File("D:\\aaaa.txt");
System.out.println(file5.renameTo(file6));
}
}
删除:
public class Demo3 {
public static void main(String[] args) {
//delete() 删除此抽象路径名表示的空文件夹或者文件(立刻删除)
File file = new File("D:\\新建文件夹 (2)\\a.txt");
System.out.println("存在此文件吗?"+file.exists());
System.out.println("删除成功了吗?"+file.delete());
System.out.println("删除后文件还存在吗?"+file.exists());
System.out.println("---------------------------------------");
//deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件夹或文件。(jvm退出时删除)
File file1 = new File("D:\\新建文件夹 (2)\\b.txt");
System.out.println("存在此文件吗?"+file1.exists());
file1.deleteOnExit();
System.out.println("删除后还存在此文件吗?"+file1.exists());
}
}
获取:
public class Demo4 {
public static void main(String[] args) {
File file = new File("D:\\新建文件夹 (2)\\a.txt");
System.out.println("是否存在a.txt文件"+file.exists()); //getName()返回由此抽象路径名表示的文件夹或文件的名称。(返回子文件夹或者子文件名)
System.out.println("getName():"+file.getName()); //getParent()返回此抽象路径名表示的父路径名;如果此路径名没有指定父路径,则返回 null。
System.out.println("getParent()"+file.getParent()); //getPath()返回此抽象路径名的绝对路径名字符串(返回父路径名+子文件或者子文件夹名)。
System.out.println("getPath()"+file.getPath()); //getAbsolutePath() 返回此抽象路径名的绝对路径名字符串(返回父路径+子文件或者子文件夹名)。
System.out.println("getAbsolutePath()"+file.getAbsolutePath()); //lastModified()如果在此路径下存在此文件或者文件夹,那么返回的是最后一次修改的时间,如果不存在那么返回的是0
Date date = new Date(file.lastModified());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println("最后一次修改的时间"+dateFormat.format(date)); //length()返回由此抽象路径名表示的文件大小(字节),如果此路径下存在此文件,那么返回文件的字节大小,如果不存在那么返回0
System.out.println("length()"+file.length());
}
}
class MyFilter implements FilenameFilter{ @Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".txt");
} } public class Demo5 {
public static void main(String[] args) {
File file = new File("D:\\新建文件夹 (2)");
System.out.println("是否存在此路径:"+file.exists()); //list()返回一个字符串数组,这些字符串指定此抽象路径名表示的子文件和子文件夹
String[] strarr1 = file.list();
for (String temp : strarr1) {
System.out.print(temp+",");
} System.out.println("\n----------------------");
//listFiles()返回一个File类型的数组,这些字符串指定此抽象路径名表示的父路径+子文件和子文件夹
File[] fliearr1 = file.listFiles();
for (File temp : fliearr1) {
System.out.print(temp+",");
} System.out.println("\n----------------------");
//listRoots()返回一个File类型的数组,列出可用的文件系统根。(比如:盘符)
File[] filearr2 = file.listRoots();
for (File temp : filearr2) {
System.out.print(temp+",");
} System.out.println("\n----------------------");
//list(FilenameFilter filter)接受一个过滤器并返回一个由过滤器过滤的字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是子文件或者子文件夹名)
String[] strarr2 = file.list(new MyFilter());
for (String temp : strarr2) {
System.out.print(temp+",");
} System.out.println("\n----------------------");
//listFiles(FileFilter filter)接受一个过滤器并返回一个由过滤器过滤的字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是父路径+子文件或者子文件夹名)
File[] filearr3 = file.listFiles(new MyFilter());
for (File temp : filearr3) {
System.out.print(temp+",");
}
}
}
最新文章
- ACM/ICPC 之 有流量上下界的网络流-Dinic(可做模板)(POJ2396)
- JQuery data API实现代码分析
- javascript的 == 与 === 的区别
- java int转byte和long转byte
- 001医疗项目-项目框架的搭建(四个maven工程)
- 【转】使用itms-services从浏览器发布iOS App遇到的问题总结
- 玄机论坛Socket类库源码 当前版本 2.6.3 更新日期:10-09/2015 z
- Codeforces 622F 「数学数论」「数学规律」
- 转 Android 4.0后,自定义Title报错 You cannot combine custom titles with other title feature
- 在Centos6.5安装MySQL
- 大容量XFS异常处理
- ev=ev || window.event 与 ev = window.event || ev 区别
- centos 单独安装nginx
- Macaca 自动化框架 [Python 系列]
- 简单重写容器vector
- 洛谷P1605 迷宫 (DFS)
- 层次聚类 Hierarchical Clustering
- 解决uploadify在Firefox下丢失session的问题
- Android—— TextView文字链接4中方法
- gzip压缩解压缩
热门文章
- java “+”运算
- Java集合和数组的比较(为什么引入集合)
- ubuntu oracle数据库18c安装
- php floor()函数 语法
- PHP copy() 函数
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
- feign学习
- cf round599 CDE
- PHP【Laravel】delayer基于redis的实现订单超时改变状态
- Redis入门很简单之三【常见参数配置】