[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.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- APP测试容易忽略的地方
我们手机APP测试,主要针对的是android和ios两大主流操作系统,总体上来说android手机型号.版本多,bug也多:ios相对bug少.下面就针对Android说一下最容易忽略的测试点吧. ...
- python+selenium自动化软件测试(第10章):测试驱动TDD
测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着 ...
- php 数据访问练习:租房查询页面
<html> <head> <title></title> <meta charset="UTF-8"/> <li ...
- C# 爬虫 Jumony html解析
前言 前几天写了个爬虫,然后认识到了自己的不足.感谢 "倚天照海- -" ,我通过你推荐的文章,意外的发现了html解析的类库——Jumony. 研究了2天,我发现这个东西简单粗暴 ...
- Tensorflow 线性回归预测房价实例
在本节中将通过一个预测房屋价格的实例来讲解利用线性回归预测房屋价格,以及在tensorflow中如何实现 Tensorflow 线性回归预测房价实例 1.1. 准备工作 1.2. 归一化数据 1.3. ...
- Tornado框架简介(二)
--------------------Application-------------------- 1.settings 1.debug=True:,设置tornado是否工作在调试模式, ...
- Serializable序列化的作用
这里转载一篇讲解java序列化(Serializable)和反序列化方面的感觉很好的文章.1.序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的 ...
- Java中 Comparator接口 与Comparable 的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt159 comparator接口与Comparable接口的区别 1. Com ...
- python爬虫-抓取acg12动漫壁纸排行设置为桌面壁纸
ACG-wallpaper 初学python,之前想抓取P站的一些图片来着,然后发现acg12这里有专门的壁纸榜单,就写了个抓取壁纸作为mac桌面壁纸玩玩. 功能:抓取acg12壁纸榜单的动漫壁纸,并 ...
- 【Java IO流】字节流和字符流详解
字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3 ...