文件与流
在实际生活中,我们总要对文件进行操作,Java提供了流可以帮助我们读写文件;
下面是常用的流类型结构图:
在对文件的读写操作中,字节流可用于读写二进制文件,字符流用于读写文本文件。所谓二进制文件,指文件无字符编码格式,均由字节(Byte)组成,图片文件、word文档等均为二进制文件。文本文件是一种特殊的二进制文件,也由字节组成,但需要通过特定的字符编码格式读取或写入,否则会出现乱码,后缀名为txt的文件就是典型的文本文件。
File类
File类的对象表示磁盘、目录、文件。其对象的属性包含了文件或目录的相关信息,如名称、长度、所含文件个数等,其方法可以完成对文件或目录的常用管理操作,如创建、删除等。
下面是File类的常用方法:
方法名称 | 参数 | 作用 | 返回值 |
---|---|---|---|
构造方法 | String | 传入文件或目录名,获取对应的文件或目录对象 | |
canRead | 无 | 文件是否可读 | boolean:是否可读 |
canWrite | 无 | 文件是否可写 | boolean:是否可写 |
delete | 无 | 删除文件或目录 | boolean:操作结果 |
exists | 无 | 文件或目录是否存在 | boolean:是否存在 |
getAbsolutePath | 无 | 获取绝对路径 | String:绝对路径 |
getFreeSpace | 无 | 获取分区的剩余空间 | long:字节数量 |
getTotalSpace | 无 | 获取分区的总空间 | long:字节数量 |
getUsableSpace | 无 | 获取分区的已用空间 | long:字节数量 |
getName | 无 | 获取文件或目录的名称 | String:文件或目录名称 |
isDirectory | 无 | 是否为目录 | boolean:是否为目录 |
isFile | 无 | 是否为文件 | boolean:是否为文件 |
isHidden | 无 | 是否为隐藏文件或目录 | boolean:是否隐藏 |
lastModified | 无 | 获取文件最后修改时间 | long:最后修改时间 |
length | 无 | 获取文件长度 | long:字节数量 |
listFiles | 无 | 获取目录的子目录、文件 | File[]:子目录和子文件 |
listRoots | 无 | 获取所有磁盘分区 | File[]:磁盘分区 |
mkdir | 无 | 创建目录 | boolean:是否创建成功 |
mkdirs | 无 | 创建多级目录 | boolean:是否创建成功 |
File类的常用方法
列出磁盘分区和D盘目录
package io;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Una
* @date 2022/7/20 11:17
* @description:
*/
public class FileTest {
public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
/**
*public static File[] listRoots() {
* return fs.listRoots();
* }
*/
// 获取当前文件系统的所有磁盘分区
File[] disks=File.listRoots();
for (int i = 0; i < disks.length; i++) {
File disk = disks[i];
System.out.println(disk.getAbsolutePath() + "盘\t总空间:"
+ disk.getTotalSpace() / 1024 / 1024 / 1024 + "G\t剩余空间"
+ disk.getFreeSpace() / 1024 / 1024 / 1024 + "G");
}