系统学习 Java IO (三)----文件类 File
Java IO API 中的 File 类可以访问基础文件系统。 使用 File 类,可以:
- 检查文件或目录是否存在。
- 如果目录不存在,创建一个目录。
- 读取文件的长度。
- 重命名或移动文件。
- 删除文件。
- 检查路径是文件还是目录。
- 读取目录中的文件列表。
注意:“File”仅允许访问文件和文件系统元数据。 如果需要读取或写入文件内容,则应使用 FileInputStream,FileOutputStream 或 RandomAccessFile 执行此操作。
File 类一共有 4 个字段,可以提供平台无关的一些字符:
| 字段 | 描述 |
|---|---|
| static String pathSeparator | 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 |
| static char pathSeparatorChar | 同上值的字符表示,UNIX系统为 '/' ,Windows 系统为 '\\'。 |
| static String separator | 与系统有关的默认名称分隔符,Unix系统是 ':' Windows系统是 ';' |
| public static final char pathSeparatorChar | 同上值的字符表示 |
构造器和一些方法示例如下:
public class FileExample {
public static void main(String[] args) throws IOException, URISyntaxException {
// File 一共有 4 种构造器,如下:
File parentDir = new File("D://test"); // 通过目录路径字符串创建
File file1 = new File("D://test//file1.txt"); // 通过文件路径字符串创建
File file2 = new File(parentDir, "childDir"); // 通过指定父目录方式创建
File uri = new File(new URI("file:/D:/test/uri")); // 通过 URI 对象创建
/*
File 对象既可用来创建目录,也可以创建文件,不会受到路径名影响,
比如可以创建名为 file1.txt 的目录,创建名为 childDir 的文件
*/
parentDir.mkdirs(); // 创建 test 目录
file1.mkdirs(); // 创建 file1.txt 目录
file2.createNewFile(); // 创建 childDir 文件
file2.mkdirs(); // file2 已创建了 childDir 文件,同一目录下再创建 childDir 目录会失败
uri.mkdirs();
System.out.println(uri.exists());
System.out.println(file1.getName()); // file1.txt
System.out.println(file1.exists()); // true
System.out.println(file1.isFile()); // false
System.out.println(file1.isAbsolute()); // true
System.out.println(file1.getAbsolutePath()); // 返回绝对路径,D:\test\file1.txt
System.out.println(file1.getAbsoluteFile()); // 等同于 new File(this.getAbsolutePath())
System.out.println(file1.toURI()); // file:/D:/test/file1.txt/
// 列出系统的根目录,C:\ D:\
File[] files = File.listRoots();
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
/* 返回 parentDir 目录下所有的文件
D:\test\childDir
D:\test\file1.txt
D:\test\ uri
*/
File[] fs = parentDir.listFiles();
for (int i = 0; i < fs.length; i++) {
System.out.println(fs[i]);
}
// 立即删除此抽象路径名表示的文件或目录。如果是目录,则该目录必须为空才能删除。
file1.delete();
// 将删除的命令缓存,JVM 终止时才真正删除
parentDir.deleteOnExit();
}
}
注意:boolean mkdirs() 方法创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。如果目录已存在,返回 false 。
系统学习 Java IO (三)----文件类 File的更多相关文章
- 系统学习 Java IO (四)----文件的读写和随机访问 FileInputStream/FileOutputStream & RandomAccessFile
目录:系统学习 Java IO---- 目录,概览 文件输入流 FileInputStream 这是一个简单的FileInputStream示例: InputStream input = new Fi ...
- 系统学习 Java IO ---- 目录,概览
Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.h ...
- 系统学习 Java IO (一)----输入流和输出流 InputStream/OutputStream
目录:系统学习 Java IO ---- 目录,概览 InputStream 是Java IO API中所有输入流的父类. 表示有序的字节流,换句话说,可以将 InputStream 中的数据作为有序 ...
- 系统学习 Java IO (十六)----这么多类,应该用哪个?
目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...
- 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader
目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...
- 系统学习 Java IO (十三)----字符读写 Reader/Writer 及其常用子类
目录:系统学习 Java IO---- 目录,概览 Reader Reader 类是 Java IO API 中所有 Reader 子类的基类. Reader 类似于 InputStream ,除了它 ...
- 系统学习 Java IO (十五)----字符读写 Reader/Writer 其他子类
目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取 ...
- 系统学习 Java IO (十一)----打印流 PrintStream
目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 OutputStream 或者直接写入 File 对象. PrintStream 类可以格式化基 ...
- 系统学习 Java IO (十二)----数据流和对象流
目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...
随机推荐
- sqlplus 上下工具
http://yunpan.cn/QNXXpjP9aBy6v 訪问password 420b 想在Unix.Linux环境下使用sqlplus,像在win以下一样,实现上下翻页. 怎么办呢? 首先要确 ...
- Expression.Blend.4 Chapter 接口设计
原文:Expression.Blend.4 Chapter 接口设计 发现网上关于silverlight,WPF美工系列的书籍一直很少,而且很多都是英文的.在公司无聊,开始进行翻译. 翻译的地方可能有 ...
- arcserver开发小结(三)
一.关于网络数据集的制作 由于要做实现网络分析的功能,而手中却没有网络数据集,关于网络数据集的制作,网上也有不少的资料.我参考的是ESRI为我们提供的帮助文档(Network_Analyst_Tuto ...
- C++安全异常std:auto_ptr
auto_ptr它是C++标准库(<utility>)为了一个智能指针类模板来解决资源泄漏所提供的问题(注意:这只是一个简单的智能指针) auto_ptr在事实原则的实现RAII,对资源的 ...
- 多元函数(multivariate function)分析(方向导数和梯度)
二阶泰勒展开: f(x)=f(0)+f′Tx+12xTf′′x+o(⋅) 对等式右端求导,并置 0,得 x=f′′−1f′ 1. 方向导数与梯度 设有单位向量 h=(h1,h2,⋯,hn)∈Rn(当然 ...
- WPF响应长按事件
原文:WPF响应长按事件 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/lwwl12/article/details/78983140 思路:MouseD ...
- dotnet pack 打包文件版本号引起 "Could not load file or assembly" 问题
如果不是遇到,真的不会想到,代码世界的问题真是千奇百怪,这次遇到的是 dotnet pack 打包文件版本号引起的问题. 之前进行 nuget 打包都是在 Visual Studio build 时进 ...
- 【windows】常见的系统环境变量,如%appdata%表示什么意思
原文:[windows]常见的系统环境变量,如%appdata%表示什么意思 1.介绍 %appdata%就代表了C:Users\用户名\AppData\Roaming这个文件夹. “%”是系统变量的 ...
- 微信小程序把玩(六)模块化
原文:微信小程序把玩(六)模块化 模块化也就是将一些通用的东西抽出来放到一个文件中,通过module.exports去暴露接口.我们在最初新建项目时就有个util.js文件就是被模块化处理时间的 /* ...
- Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法
最近在Delphi开发中用到了无边框窗体显示时,无法在任务栏使用右键弹出菜单的情况,经过整理,通过以下方法可以使右键菜单出现: procedure Tfrm_Base.InitSysMenu;var ...