Java8 Paths类和Files类
Java8 中新增了Paths和Files两个工具类,用来便捷的操纵文件
Paths类
Path类表示的是一个目录名序列,其后还可以跟着一个文件名。Paths类示对应的工具类
//java.nio.file.Paths
static Path get(String first,String .. more)
Paths类的get方法接受一个或多个字符串,并将它们用默认的文件系统的路径分隔符(类Unix文件系统是/,Windows是\)
比如
Path absolute =Paths.get("/home","harry");
表示路径为/home/harry
Files类
Files类使得普通文件操作变得快捷
@Test
public void test2() throws IOException {
//返回以相对地址为基础的路径,不判断文件是否存在
Path path = Paths.get("pom.xml").toAbsolutePath();
System.out.println(path);
System.out.println("文件是否存在: " + Files.exists(path));
System.out.println("是否是目录: " + Files.isDirectory(path));
System.out.println("是否是可执行文件: " + Files.isExecutable(path));
System.out.println("是否可读: " + Files.isReadable(path));
System.out.println("判断是否是一个文件: " + Files.isRegularFile(path));
System.out.println("是否可写: " + Files.isWritable(path));
System.out.println("文件是否不存在: " + Files.notExists(path));
System.out.println("文件是否隐藏: " + Files.isHidden(path));
System.out.println("文件大小: " + Files.size(path));
System.out.println("文件存储在SSD还是HDD: " + Files.getFileStore(path));
System.out.println("文件修改时间:" + Files.getLastModifiedTime(path));
System.out.println("文件拥有者: " + Files.getOwner(path));
System.out.println("文件类型: " + Files.probeContentType(path));
}
@Test
public void test2() throws IOException {
//返回以相对地址为基础的路径,不判断文件是否存在
Path path = Paths.get("pom.xml").toAbsolutePath();
//读取文件所有字节
byte[] bytes=Files.readAllBytes(path);
String content=new String(bytes,charset);
//按行读取
List<String> lines=Files.readAlllines(path,charset);
//写入字节
Files.write(path,content.getBytes(charset));
//向指定文件追加内容
Files.write(path,content.getBytes(charset),StandardOpenOption.APPEND);
}
注意的是,Files一般用于简单文件的读写,如果文件过大,还是应该使用IO流来进行读写。
@Test
public void test2() throws IOException {
//返回以相对地址为基础的路径,不判断文件是否存在
Path path = Paths.get("pom.xml").toAbsolutePath();
//创建文件
Files.createFile(path);
//复制文件,如果目标路径已经存在则会失败
Files.copy(fromPath,toPath);
//移动文件,如果目标路径已经存在则会失败
Files.move(fromPath,toPath);
//删除文件
Files.delete(path);
}
可以添加StandardOpenOption类作为一个参数 来完成指定功能
StandardOpenOption是一个枚举类,包括:
//用于write
READ
WRITE
APPEND:在文件末尾追加
TRUNCATE_EXISTING:移除已有内容
CREATE_NEW:创建新文件并且在文件已存在的情况下创建失败
CREATE:自动在文件不在的情况下创建新文件
DELETE_ON_CLOSE:当文件被关闭时,“尽可能”删除文件
SPARSE:给文件系统一个提示,表示该文件是稀疏的
DSYN|SYN:要求对文件数据 | 数据和元数据 的每次更新都必须同步写入到存储设备中
//用于copy,move
ATOMIC_MOVE:原子性的移动文件
COPY_ATTRIBUTES:复制文件的属性
REPLACE_EXISTING:如果目标已存在则替换它
我有一壶酒
足以慰风尘
尽倾江海里
赠饮天下人
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话