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类的简单使用的更多相关文章

  1. Java File 类的使用方法详解

    Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...

  2. Java File 类的使用方法详解(转)

    转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...

  3. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  4. Java File类 mkdir 不能创建多层目录

    File f = new File("/home/jp/Upload"); if ((!f.exists()) || (!f.isDirectory())) {boolean re ...

  5. Java File类基础解析 1

    Java File类基础解析 1 File类的构造方法 public File(String pathname) :通过给定的路径名字符转换为抽象路径名来创建新的File实例 String path ...

  6. JAVA File类 分析(三)

    前面两篇与大家一起研究了unix下的文件系统,本篇将和大家一起分析 文件的属性和文件夹. ok,废话不说,先来段代码 #include <stdio.h> #include <sys ...

  7. Java File类常用方法及实例

    创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false. createTempFile(String prefix, String s ...

  8. java File 类对操作系统文件目录进行操作:增删查

    File类 1,概述 File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成. 2,构造方法 public File(Strin ...

  9. Java File类基本操作

    我们可以利用Java.io.File类对文件进行操作,基本操作如下: 1)创建文件: public boolean createNewFile() throws IOException 2)删除文件: ...

随机推荐

  1. App安全常见漏洞修复建议

    ios开发对自己的app做一系列的环境检测 检测Cydia是否安装 检测app是否可以编辑系统文件 检测系统是否包含可疑的文件 检测是否有可疑的app安装如:FakeCarrier, Icy, etc ...

  2. 应用程序-特定 权限设置并未向在应用程序容器不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户...的 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。

    很久以前发现我们的业务服务器上出现一个System的系统严重错误,查找很久都没有找到解决办法,今日再次查看服务器发现报错更频繁,于是就搜集各种资料进行查找解决办法,终于找到了一个解决办法. 错误截图介 ...

  3. Guitar Pro7应该怎么添加音色

    众所周知,音色是乐器的灵魂所在.音色的好坏,直接影响到了整首曲子的质量.Guitar Pro7中,用户不仅可以切换乐器模拟器,还能分别对其进行音色调整.对于新手而言,Guitar Pro7是一款非常合 ...

  4. 2016年第七届蓝桥杯【C++省赛B组】F、G、H、J 题解

    F. 方格填数 #深搜 题意 有\(10\)个格子,填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻),求可能的填数方案数. +--+--+--+ | | | | +--+- ...

  5. LeetCode 025 Reverse Nodes in k-Group

    题目描述:Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time an ...

  6. java46

    1.迭代器遍历 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public c ...

  7. MySQL(13)---MYSQL主从复制原理

    MYSQL主从复制原理 最近在做项目的时候,因为部署了 MYSQL主从复制 所以在这里记录下整个过程.这里一共会分两篇博客来写: 1.Mysql主从复制原理 2.docker部署Mysql主从复制实战 ...

  8. 使用react终端运行npm start时报错

    npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! my-app@0.1.0 start: `react-scripts start` npm ERR ...

  9. pthread 条件变量

    在上一篇博客互斥量中,解决了线程如何互斥访问临界资源的问题. 在开始本文之前,我们先保留一个问题:为什么需要条件变量,如果只有互斥量不能解决什么问题? API init/destroy 条件变量的数据 ...

  10. 第七章、PyQt图形界面应用程序的事件捕获方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一. 概述 PyQt的图形界面应用中,事件处理类似于Windows系统的消息处理.一个带图形界面的应 ...