[01] File类
1、IO概念
- 如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据
- 通过输入和输出操作可以从外界接收信息,或者把信息传递给外界
- 把数据读入到内存中,为输入Input,进行数据的read操作
- 把内存往外部设备写数据,称为输出Output,进行数据的write操作

2、File类
2.1 File类的构造方法

- public File(String pathname) 根据路径得到File对象
- File file = new File("C:\\demo\\a.txt");
- public File(String parent, String child) 根据一个目录和一个子文件/目录得到File对象
- File file = new File("C:\\demo", "a.txt");
- public File(File parent, String child) 根据一个父File对象和一个子文件/目录得到File对象
- File baseFile = new File("C:\\demo"); File file = new File(baseFile, "a.txt");
2.2 File类的常用方法
| 返回值 | 方法名 | 说明 |
| boolean | exists() | 判断文件是否存在 |
| boolean | isFile() | 判断是否为文件 |
| boolean | isDirectory() | 判断是否为目录 |
| String | getName() | 获取文件的名称 |
| String | getAbsolutePath() | 获取文件的绝对路径 |
| long | length() | 获取文件的大小长度(字节数) |
| boolean | createNewFile() | 创建新文件,返回执行结果 |
| boolean | delete() | 删除文件,返回执行结果 |
| boolean | canWrite() | 是否可写 |
2.3 创建File
2.3.1 创建目录
| 返回值 | 方法名 | 说明 |
| boolean | mkdir() | 根据File对象创建一个目录 |
| boolean | mkdirs() | 根据File对象创建整个目录 |
- mkdir()创建目录,必须上一级目录存在。如例若D盘下abc目录存在,但xyz目录不存在,则不能成功创建hello目录
- mkdirs()创建File对象包含的整个目录,不论路径中某个目录实际是否存在,不存在则创建
2.3.2 创建文件 (New / Temp)
| 返回值 | 方法名 | 说明 |
| boolean | createNewFile() | 创建新的文件 |
| boolean | File.createTempFile() | 创建新的临时文件 |
- createNewFile() 根据路径创建空文件,当路径不存在,或文件已存在则创建失败(这意味着最好先调用exists方法判断)
- File.createTempFile() 根据路径创建临时文件,可指定文件名前后缀以及文件目录,若不指定目录则放在系统临时文件夹下
- createTempFile(String prefix, String suffix)
- createTempFile(String prefix, String suffix, File directory)

2.4 删除文件 (delete / deleteOnExit)
File file = new File("C:/test/test.txt");
if(file.exists()){
file.delete();
}
File file = new File("C:/test/test.txt");
if(file.exists()){
file.delete();
}
File file = File.createTempFile("tmp", null);
file.deleteOnExit();
File file = File.createTempFile("tmp", null);
file.deleteOnExit();
public static void main(String[] args) throws IOException {
File directory = new File("C:/test");
File temp = File.createTempFile("temp", null, directory);
temp.deleteOnExit();
System.out.println("deleteOnExit()已经执行!");
System.out.println("real end"); //此处打断点暂停,发现文件尚未删除
}
public static void main(String[] args) throws IOException {
File directory = new File("C:/test");
File temp = File.createTempFile("temp", null, directory);
temp.deleteOnExit();
System.out.println("deleteOnExit()已经执行!");
System.out.println("real end"); //此处打断点暂停,发现文件尚未删除
}
3、File类的遍历
3.1 遍历
| 返回值 | 方法名 | 说明 |
| String[] | list() | 将目录下的子目录及文件的名字,返回到String数组中 |
| File[] | listFiles() | 将目录下的子目录及文件的实例返回到File数组中 |
3.2 过滤
- list ( FilenameFilter filter )
- listFiles ( FileFilter filter )
- listFiles ( FilenameFilter filter )
- FilenameFilter 要求实现 boolean accept ( File dir, String name )
- dir:表示文件的当前目录
- name:表示当前目录的子目录或文件的名字
- FileFilter 要求实现 boolean accept ( File pathName)
- pathName:表示当前目录的子目录或文件的名字
public class MyFilenameFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
if (name.endsWith(".java")) {
return true;
} else {
return false;
}
}
}
public class MyFilenameFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
if (name.endsWith(".java")) {
return true;
} else {
return false;
}
}
}
public static void main(String[] args) throws IOException {
File directory = new File("C:/test");
String[] dirs = directory.list(new MyFilenameFilter());
for (String dir : dirs) {
System.out.println(dir);
}
}
public static void main(String[] args) throws IOException {
File directory = new File("C:/test");
String[] dirs = directory.list(new MyFilenameFilter());
for (String dir : dirs) {
System.out.println(dir);
}
}
public class MyFileFilter implements FileFilter{
public boolean accept(File pathname) {
if (pathname.isFile()) {
return true;
} else {
return false;
}
}
}
public class MyFileFilter implements FileFilter{
public boolean accept(File pathname) {
if (pathname.isFile()) {
return true;
} else {
return false;
}
}
}
public static void main(String[] args) throws IOException {
File directory = new File("C:/test");
File[] files = directory.listFiles(new MyFileFilter());
for (File file : files) {
System.out.println(file.getName());
}
}
public static void main(String[] args) throws IOException {
File directory = new File("C:/test");
File[] files = directory.listFiles(new MyFileFilter());
for (File file : files) {
System.out.println(file.getName());
}
}
4、总结
- File对象封装了一个文件/目录,不能操作文件内容
- 通过File对象可以创建或删除文件/目录,留意createTempFile和deleteOnExit
- File对象的遍历可以通过过滤器进行筛选
5、其他知识点延伸
5.1 FileCopyUtils.copy()

[01] File类的更多相关文章
- JavaIO(01)File类详解
File类 file类中的主要方法和变量 常量: 表示路径的分割符:(windows) 作用:根据java可移植性的特点,编写路径一定要符合本地操作系统要求的分割符: public static ...
- 01.使用File类读写文件
使用File类去读数据: 方法一:使用ReadAllBytes(); 方法 namespace _01.使用File类读写数据01 { class Program { static void Main ...
- 01 IO流(一)—— 流的概念、File类
1 流的概念理解(重要) 理解流的概念非常重要. 流,就是程序到数据源或目的地的一个通道. 我们把这个通道实例化得到一个具体的流,相当于一个数据传输工具,它可以在程序与资源之间进行数据交换. 换言之, ...
- 01 语言基础+高级:1-8 File类与IO流_day08【 File类、递归】
day08[File类.递归] 主要内容 File类 递归 教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类 ...
- 01背包(类) UVA 10564 Paths through the Hourglass
题目传送门 /* 01背包(类):dp[i][j][k] 表示从(i, j)出发的和为k的方案数,那么cnt = sum (dp[1][i][s]) 状态转移方程:dp[i][j][k] = dp[i ...
- Java IO_001.File类--文件或文件夹相关操作
Java IO之File对象常用操作 File类:用于文件或文件夹或网址相关联的操作.可以关联或不关联文件(即关联不存在的文件).构造函数有: public File(String pathname) ...
- File类常用方法和枚举
新建一个file对象: File f = new File("F:\\01.JAVA基础300集\\05_常用类\\122.File类的使用.mp4"); (文件路径也可以用&qu ...
- Java 基础(三)| IO流之使用 File 类的正确姿势
为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 File 类? java ...
- File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?
重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- Json-Server模拟数据接口开发
前端开发过程中调用后台接口是常事,在前后台定义好接口规范和参数后,后台接口的进度有时会成为我们的掣肘,这里推荐使用一款简单的小工具json-server,小而轻便. 确保本地已有node环境. 一:安 ...
- GC选择之CMS 并发标记清除
CMS收集器 Concurrent Markup Sweep 并发标记清除 使用了标记-清除算法 与标记-压缩相比,并发阶段会降低吞吐量 算法作用在老年代以及永久区(新生代使用ParNew) -XX: ...
- Apache的配置文件http.conf参数含义详解
Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...
- Spring框架IOC,DI概念理解
1.什么是框架? 框架是一种重复使用的解决方案,针对某个软件开发的问题提出的. Spring框架,它是一个大型的包含很多重复使用的某个领域的解决方案. Spring的理念:不要重复发明轮子. 2.Sp ...
- HttpResponseMessage获取请求响应体内容
问题描述 使用httpClient获取的HttpResponseMessage类型的response,直接对其toString()获取的是请求的响应头,并没有获取响应体的内容 解决办法 HttpRes ...
- vue.js基础知识篇(4):过滤器、class与style的绑定2
代码下载:网盘 欢迎私信 第一章:过滤器 过滤器是对数据进行处理并返回结果的函数. 1.语法 语法是使用管道符"|"进行连接.过滤器可以接收参数,跟在过滤器后面,带引号的参数被当做 ...
- Spring MVC控制层传递对象后在JSP页面中的取值方法
List<Order> orders = new ArrayList<Order>(); for (int i = 0; i < 3; i++) { Order t = ...
- solr-geohsah 按照距离搜索分组
通过solr的domain-import,将mysql的数据通过查询,导入到solr中.java通过使用solrj,链接solr,调用domaininport,并将分页参数设置到domain-impo ...
- Cognos 11.0快速开发指南 Ⅰ
1. 概述 Cognos Analysics 11,是IBM在Cognos BI 10的版本基础上,吸取业界流行的敏捷BI理念,强化了自助式分析的一款强大BI开发平台工具.其官方文档内容丰富,但是较为 ...
- MongoDB三节点高可用模式安装
设备: 三个1G.20G.1核的虚拟机,系统是SentOS7 min 清除原始自数据目录: rm -fr /home/mongosingle/ 创建目录: mkdir -p /home/mongosi ...