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:如果目标已存在则替换它
我有一壶酒
足以慰风尘
尽倾江海里
赠饮天下人

浙公网安备 33010602011771号