[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.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- Nodejs 复制文件/文件夹
1.使用fs复制文件 使用fs对象的readFileSync,writeFileSync方法进行读写操作复制 cp.js function copyIt(from, to) { fs.writeFil ...
- What is the difference for delete/truncate/drop
Same: delete/truncate/drop, all of them can support rollback/commit, the sample is as below: begin t ...
- centos7破解mariadb密码
第一步,停止运行mysql: systemctl stop mariadb.service 第二步,使用" -skip-grant-tables"参数重新启动mysql: mysq ...
- SuperSocket基础(二)-----一个完成SocketServer项目
SuperSocket基础(二)-----一个完成SocketServer项目 由于时间关系未能及时更新,关于SuperSocket,对于初学者而言,一个SuperSock的Server真的不好写.官 ...
- MySQL 网络访问连接
查看 /etc/hosts配置文件 [hotspot@bogon ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localh ...
- asp.net mvc 动态编译生成Controller
做网站后台管理系统的时候,有时我们需要根据用户的录入配置动态生成一些频道,这些频道需要用到独立的Controller,这时就需要用到运行时动态编译了.代码如下: using System.Web.Mv ...
- C#异步编程(async and await)及异步方法同步调用
1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程计算机或查询数据库=异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某个操作时,应用程序可在异步方 ...
- JSP慕课网之application、page、pageContext、config、exception
接下来使用getSession().forward().include()方法. 跳转的include.jsp页面:
- links
http://stackoverflow.com/questions/23469784/com-fasterxml-jackson-databind-exc-unrecognizedpropertye ...
- indexOf和lastIndexOf方法
lastIndexOf 方法: 返回 String 对象中子字符串最后出现的位置. strObj.lastIndexOf(substring[startindex]) 参数:strObj必选项.Str ...