Java File类的简单使用
Java File的简单使用(创建、删除、遍历、判断是否存在等)
Java文件类以抽象的方式代表文件名和目录路径名。该类本身不能用来读数据或写数据,它主要用于磁盘上文件和目录的创建、文件的查找和文件的删除。做一些非读写方面的工作,比如看看文件是否存在、是否可读写及遍历文件目录等等。要想读写数据,必须和其它io流的类配合使用,比如FileInputStream、FileOutputStream等。File对象代表磁盘中实际存在的文件和目录,以下就通过一些简单的列子介绍File的基本使用。
这是整个File简单使用的代码:


1 package com.tianjh;
2
3 import java.io.File;
4 import java.io.IOException;
5
6 /**
7 * Created on 2020/12/10
8 * File类的基本使用
9 *
10 */
11 public class FileDemo {
12 public static void main(String[] args) {
13 String dirname = "D:/Demo";
14 // 实例化一个File对象
15 File f1 = new File(dirname);
16
17 // 1. 遍历指定目录之下的所有文件
18 // 判断f1对象是否是一个目录
19 if (f1.isDirectory()) {
20 System.out.println("Directory of " + dirname);
21 String[] s = f1.list();
22 // 遍历s数组,取出数组中的元素进行判断
23 for (int i = 0; i < s.length; i++) {
24 File f = new File(dirname + "/" + s[i]);
25 if (f.isDirectory()) {
26 System.out.println(s[i] + " is a directory");
27 } else {
28 System.out.println(s[i] + " is a file");
29 }
30 }
31 } else {
32 // 不是一个目录
33 System.out.println(dirname + " is not a directory");
34 }
35 // expected output:
36 // Directory of D:/Demo
37 // BufferedInputStream.java is a file
38 // BufferedOutputStream.java is a file
39 // childFile is a directory
40
41 /*
42 * 2. 测试指定文件是否可执行
43 * 测试应用程序是否可以执行此抽象路径名表示的文件
44 * true: 当且仅当存在抽象路径名,并允许应用程序执行该文件时
45 */
46 System.out.println(dirname + " allowed to execute? " + f1.canExecute());
47 // expected output: D:/Demo allowed to execute? true
48
49
50 /*
51 * 3. 测试指定文件是否可读取
52 * 测试应用程序是否可以读取由此抽象路径名表示的文件
53 * true: 当且仅当此抽象路径名指定的文件存在并可由应用程序读取时;
54 * false: 与true相反
55 */
56 System.out.println(dirname + " allowed to read? " + f1.canRead());
57 // expected output: D:/Demo allowed to read? true
58
59 /*
60 * 4. 测试指定文件是否可写
61 * 测试应用程序是否可以修改由此抽象路径名表示的文件
62 * true: 当且仅当文件系统实际上包含由该抽象路径名表示的文件并且允许应用程序写入该文件时;
63 * false: 与true相反
64 */
65 System.out.println(dirname + " allowed to write? " + f1.canWrite());
66 // expected output: D:/Demo allowed to write? true
67
68 /*
69 * 5. 比较抽象路径名和参数抽象路径名是否相等
70 * 比较两个抽象的路径名字典是否相等 等于零则相等,小于零则抽象路径名字典小于参数路径字典,大于则相反
71 * 比较规则按照字典顺序进行排序
72 */
73 String s1 = "C:/Boot";
74 // “D:/Demo” 与 "C:/Boot" 比较
75 System.out.println(f1.compareTo(new File(s1)));
76 // expected output: 1
77 String s2 = "D:/Deoo";
78 // “D:/Demo” 与 "D:/Deoo" 比较
79 System.out.println(f1.compareTo(new File(s2)));
80 // expected output: -2
81
82
83 /*
84 * 6. 创建一个新文件
85 * 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件
86 * true: 如果命名文件不存在并被成功创建;
87 * false: 如果命名文件已经存在
88 */
89 File f3 = new File("/Boot");
90 try {
91 System.out.println("/Boot file is created? " + f3.createNewFile());
92 // expected output: /Boot file is created? false
93 } catch (IOException e) {
94 e.printStackTrace();
95 }
96
97 /*
98 * 7. 创建一个目录
99 * 创建由此抽象路径名命名的目录
100 */
101 String dirnames = "D:/tmp/boot";
102 File f4 = new File(dirnames);
103 // 创建一个文件夹,成功则返回true,失败则返回false。
104 // 失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
105 System.out.println("create mkdir is " + f4.mkdir());
106 // expected output: create mkdir is true
107
108
109 /*
110 * 8. 创建一个目录,包括其不存在的父级目录
111 * 创建一个文件夹和它的所有父文件夹 失败表明File对象指定的路径已经存在
112 */
113 System.out.println("create mkdirs is " + f4.mkdirs());
114 // expected output: create mkdirs is false
115
116
117 /*
118 * 9. 删除文件或者目录
119 * 删除由此抽象路径名表示的文件或目录
120 * true当且仅当文件或目录被成功删除时; false否则
121 */
122 System.out.println(dirnames + " deleted is " + f4.delete());
123 // expected output: D:/tmp/boot deleted is true
124
125
126 /*
127 * 10. 取得抽象路径的名称
128 * 取到抽象路径名表示的文件或目录的名称
129 */
130 System.out.println("getName is " + f1.getName());
131 // expected output: getName is Demo
132
133
134 /*
135 * 11. 取得抽象路径的字符串
136 * 获得由抽象路径名转换为路径名字符串
137 */
138 System.out.println("getPath is " + f1.getPath());
139 // expected output: getPath is D:\Demo
140
141 /*
142 * 12. 取得抽象路径的绝对路径
143 * 获得此抽象路径名的绝对路径名字符串
144 */
145 System.out.println("Absolute Path is " + f1.getAbsolutePath());
146 // expected output: Absolute Path is D:\Demo
147
148
149 /*
150 * 13. 判断抽象路径指定的文件或目录是否存在
151 * 测试此抽象路径名表示的文件或目录是否存在
152 * true: 当且仅当存在由此抽象路径名表示的文件或目录时;
153 * false: 与true相反
154 */
155 System.out.println(f1.exists() ? "exist" : "not");
156 // expected output: exist
157 }
158
159 }
FileDemo.Java
下面分别介绍常用的几种方法:
1、遍历指定目录之下的所有文件( 遍历" D:/Demo "中的所有文件及目录 )
D磁盘中Demo目录的结果如下所示:
示例代码:
String dirname = "D:/Demo";
// 实例化一个File对象
File f1 = new File(dirname); // 1. 遍历指定目录之下的所有文件
// 判断f1对象是否是一个目录
if (f1.isDirectory()) {
System.out.println("Directory of " + dirname);
String[] s = f1.list();
// 遍历s数组,取出数组中的元素进行判断
for (int i = 0; i < s.length; i++) {
File f = new File(dirname + "/" + s[i]);
if (f.isDirectory()) {
System.out.println(s[i] + " is a directory");
} else {
System.out.println(s[i] + " is a file");
}
}
} else {
// 不是一个目录
System.out.println(dirname + " is not a directory");
}
// expected output:
// Directory of D:/Demo
// BufferedInputStream.java is a file
// BufferedOutputStream.java is a file
// childFile is a directory
输出结果:
2、测试指定文件是否可执行
/*
* 2. 测试指定文件是否可执行
* 测试应用程序是否可以执行此抽象路径名表示的文件
* true: 当且仅当存在抽象路径名,并允许应用程序执行该文件时
*/
System.out.println(dirname + " allowed to execute? " + f1.canExecute());
// expected output: D:/Demo allowed to execute? true
3、测试指定文件是否可读取
/*
* 3. 测试指定文件是否可读取
* 测试应用程序是否可以读取由此抽象路径名表示的文件
* true: 当且仅当此抽象路径名指定的文件存在并可由应用程序读取时;
* false: 与true相反
*/
System.out.println(dirname + " allowed to read? " + f1.canRead());
// expected output: D:/Demo allowed to read? true
4、测试指定文件是否可写
/*
* 4. 测试指定文件是否可写
* 测试应用程序是否可以修改由此抽象路径名表示的文件
* true: 当且仅当文件系统实际上包含由该抽象路径名表示的文件并且允许应用程序写入该文件时;
* false: 与true相反
*/
System.out.println(dirname + " allowed to write? " + f1.canWrite());
// expected output: D:/Demo allowed to write? true
样例2、3、4的结果可参考Demo 的属性
5、比较抽象路径名和参数抽象路径名是否相等,根据字典顺序进行比较
/*
* 5. 比较抽象路径名和参数抽象路径名是否相等
* 比较两个抽象的路径名字典是否相等 等于零则相等,小于零则抽象路径名字典小于参数路径字典,大于则相反
* 比较规则按照字典顺序进行排序
*/
String s1 = "C:/Boot";
// “D:/Demo” 与 "C:/Boot" 比较
System.out.println(f1.compareTo(new File(s1)));
// expected output: 1
String s2 = "D:/Deoo";
// “D:/Demo” 与 "D:/Deoo" 比较
System.out.println(f1.compareTo(new File(s2)));
// expected output: -2
结果:
6、创建一个新文件
/*
* 6. 创建一个新文件
* 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件
* true: 如果命名文件不存在并被成功创建;
* false: 如果命名文件已经存在
*/
File f3 = new File("/Boot");
try {
System.out.println("/Boot file is created? " + f3.createNewFile());
// expected output: /Boot file is created? false
} catch (IOException e) {
e.printStackTrace();
}
结果:
7、创建一个目录
/*
* 7. 创建一个目录
* 创建由此抽象路径名命名的目录
*/
String dirnames = "D:/tmp/boot";
File f4 = new File(dirnames);
// 创建一个文件夹,成功则返回true,失败则返回false。
// 失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
System.out.println("create mkdir is " + f4.mkdir());
// expected output: create mkdir is true
结果:
8、创建一个目录,包括其不存在的父级目录,因为在上列中创建了对应的目录文件,所有mkdirs创建就返还false
/*
* 8. 创建一个目录,包括其不存在的父级目录
* 创建一个文件夹和它的所有父文件夹 失败表明File对象指定的路径已经存在
*/
System.out.println("create mkdirs is " + f4.mkdirs());
// expected output: create mkdirs is false
9、删除文件或者目录(删除前面创建的/tmp路径下的boot)
/*
* 9. 删除文件或者目录
* 删除由此抽象路径名表示的文件或目录
* true当且仅当文件或目录被成功删除时; false否则
*/
System.out.println(dirnames + " deleted is " + f4.delete());
// expected output: D:/tmp/boot deleted is true
结果:
10、取得抽象路径的名称
/*
* 10. 取得抽象路径的名称
* 取到抽象路径名表示的文件或目录的名称
*/
System.out.println("getName is " + f1.getName());
// expected output: getName is Demo
结果:
11、取得抽象路径的字符串
/*
* 11. 取得抽象路径的字符串
* 获得由抽象路径名转换为路径名字符串
*/
System.out.println("getPath is " + f1.getPath());
// expected output: getPath is D:\Demo
结果:
12、取得抽象路径的绝对路径
/*
* 12. 取得抽象路径的绝对路径
* 获得此抽象路径名的绝对路径名字符串
*/
System.out.println("Absolute Path is " + f1.getAbsolutePath());
// expected output: Absolute Path is D:\Demo
结果:
13、判断抽象路径指定的文件或目录是否存在
/*
* 13. 判断抽象路径指定的文件或目录是否存在
* 测试此抽象路径名表示的文件或目录是否存在
* true: 当且仅当存在由此抽象路径名表示的文件或目录时;
* false: 与true相反
*/
System.out.println(f1.exists() ? "exist" : "not");
// expected output: exist
结果:
Java File类的简单使用的更多相关文章
- Java File 类的使用方法详解
Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...
- Java File 类的使用方法详解(转)
转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...
- Java File类总结和FileUtils类
Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...
- Java File类 mkdir 不能创建多层目录
File f = new File("/home/jp/Upload"); if ((!f.exists()) || (!f.isDirectory())) {boolean re ...
- Java File类基础解析 1
Java File类基础解析 1 File类的构造方法 public File(String pathname) :通过给定的路径名字符转换为抽象路径名来创建新的File实例 String path ...
- JAVA File类 分析(三)
前面两篇与大家一起研究了unix下的文件系统,本篇将和大家一起分析 文件的属性和文件夹. ok,废话不说,先来段代码 #include <stdio.h> #include <sys ...
- Java File类常用方法及实例
创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false. createTempFile(String prefix, String s ...
- java File 类对操作系统文件目录进行操作:增删查
File类 1,概述 File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成. 2,构造方法 public File(Strin ...
- Java File类基本操作
我们可以利用Java.io.File类对文件进行操作,基本操作如下: 1)创建文件: public boolean createNewFile() throws IOException 2)删除文件: ...
随机推荐
- linux centos 6.x 装机后基本优化
1.关闭SELinux /etc/selinux/config配置文件内替换 se -i 's/SELINUX=enforcing/SELINUX=disabled/g'需要重启grep SELINU ...
- 面试官:就问个Spring容器初始化和Bean对象的创建,你讲一小时了
前言 spring作为一个容器,可以管理对象的生命周期.对象与对象之间的依赖关系.可以通过配置文件,来定义对象,以及设置其与其他对象的依赖关系. main测试类 public static void ...
- 2个快速制作完成一幅思维导图的iMindMap思维导图用法
随着思维导图的流行,与其相关的思维导图制作软件如雨后春笋,纷纷进入我们的视野中,更让人难以选择.那想要入门的萌新该如何开始这个新的旅途呢? 各式各样的思维导图制作软件当中,有一个软件得到了大家一致的好 ...
- iOS gif图显示问题
问题 有时候需要显示gif动态图,让界面更加的绚丽,但是iOS默认只支持png,gpg图片.那么如何才能显示gif图呢? 解决方式 添加框架 CoreGraphics.framework ImageI ...
- PC 端轮播图的实现
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- I/O中的 同步异步,阻塞非阻塞
I/O中的同步和异步的概念和线程中不太一样. I/O写的时候,默认是写到页高速缓存就返回的,然后异步刷到磁盘上.而同步的I/O指的是改动写到磁盘上之后才会返回结果.可以通过fsync(),和fdata ...
- Clickhouse 入门
clickhouse 简介 ck是一个列式存储的数据库,其针对的场景是OLAP.OLAP的特点是: 数据不经常写,即便写也是批量写.不像OLTP是一条一条写 大多数是读请求 查询并发较少,不适合放置先 ...
- 最新小样本学习综述 A Survey on Few-Shot Learning | 四大模型Multitask Learning、Embedding Learning、External Memory…
目录 原文链接: 小样本学习与智能前沿 01 Multitask Learning 01.1 Parameter Sharing 01.2 Parameter Tying. 02 Embedding ...
- 这篇建议java开发都看看,对Java方法及加深理解的很深,值得一看!
方法和加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环 和 return 的区别 方法名:注意规范 见名知意 参数列表(参数类型,参数名)- 异常抛出 // Demo01 类 ...
- Spring Cloud 学习 (一) Eureka
微服务的功能主要有以下几个方面: 服务的注册和发现 服务的负载均衡 服务的容错 服务网关 服务配置的统一管理 链路追踪 实时日志 服务注册是指向服务注册中心注册一个服务实例,服务提供者将自己的服务信息 ...