13.5 Files类操作梳理(上)

目录

13.5  引言

13.5.1  创建和删除目录及文件

13.5.2  文件属性操作

13.5.3  文件和目录的复制与移动


13.5  引言

         java.nio.files类是一个功能非常强大的类。该类定义了大量的静态方法用来读、写和操纵文件与目录。Files类主要操作Path对象

13.5.1  创建和删除目录及文件

Files类提供了下面的方法创建、删除目录及文件
        1.public static Path createDirectory(Path dir,FileAttribute<?>...attrs):创建由dir指定的目录,参数attrs指定目录的属性,如果不需要设置属性,可忽略该参数。如果创建的目录已经存在,该方法将抛出FileAlreadyExistsException异常

        2.public static Path createFile(Path file,FileAttribute<?>...attrs):创建由file指定的文件。如果文件的父目录不存在,该方法会抛出一个IOException异常。如果存在一个同名的文件,将抛出FileAlreadyExistsException异常

        3.public static void delete(Path path):删除由path指定的目录或文件。如果path是一个目录要求目录必须为空,如果path不存在,将会抛出NoSuchFileException异常

        4.public static void deleteIfExists(Path path):如果path对象存在则将其删除。如果path是目录,要求目录必须为空如果不为空则抛出DirectoryNotEmptyException异常

delete(Path)和deleteIfExists(Path)方法的区别

  • delete(Path)删除文件,如果删除失败将抛出异常。例如:如果文件不存在将抛出NoSuchFileException异常,可以捕获有关异常确定删除文件失败的原因
  • deleteIfExists(Path)也可删除文件,但如果文件不存在将不抛出异常。这个特性在多线程删除文件、又不想抛出异常时特别有用,因为可能一个线程先执行了删除s

13.5.2  文件属性操作

        可以使用Files类的方法检查Path对象表示的文件或目录是否存在,是否可读,是否可写,是否可执行等。

1.public static boolean exists(Path path,LinkOption...options):检查path所指的文件或目录是否存在。 

2.public static boolean notExists(Path path,LinkOption...options):检查path所指的文件或目录是否不存在。注意,!Files.exists(path)和Files.notExists(path)并不等价。如果exists(path)与notExists (path)都返回false,说明文件不能检验
3.public static boolean isReadable(Path path):检查path所指的文件或目录是否可读
4.public static boolean isWritable(Path path):检查path所指的文件或目录是否可写
5.public static boolean isExecutable(Path path):检查path所指的文件或目录是否可执行
6.static boolean isRegularFile(Path path):如果指定的path对象是一个文件返回true

下面代码检验一个文件是否存在,是否可执行

Path file=Paths.get("D:\\study\data.ser");
boolean isRegular=Files.isRegularFile(file) & Files.isReadable(file) 
& Files.isExecutable(file);

Files类中包含了下面一些获得或设置文件一个属性的方法
1.static long size(Path path):返回指定文件的字节大小
2.static boolean isDirectory(Path path,LinkOption...options):如果指定的Path对象是一个目录就返回true
3.static boolean isHidden(Path path):如果指定的Path对象是隐藏的返回true
4.static FileTime getLastModifiedTime(Path path,LinkOption...options):返回指定文件的最后修改时间
5.static Path setLastModifiedTime(Path path,FIleTime):设置指定文件的最后修改时间
6.static Path setOwner(Path path,UserPrincipal):设置指定文件的所有者
7.static Object getAttribute(Path path,String,LinkOption...options):设置用字符串指定文件的属性
8.static Path setAttribute(Path path,String,Object obj,LinkOption...options):设置用字符串指定文件的属性
        注意:当要删除路径时,由于路径不空所以发生异常。可以先删除目录中的文件,再删除目录

13.5.3  文件和目录的复制与移动

        使用Files类的copy()方法可以复制文件和目录。使用move()方式可以移动目录和文件copy()方法的一般格式为:

        public static Path copy(Path source,Path target,CopyOption...)
        source为源文件:target为目标文件:可选的参数options为CopyOption接口对象,是java.nio.file包的一个接口。StandardCopyOption枚举是CopyOption接口的一个实现,提供了下面三个复制选项

        1.ATOMIC_MOVE:将移动文件作为一个原子的文件系统操作
        2.COPY_ATTIBUTES:将属性复制到新文件中
        3.REPLACE_EXISTING:如果文件存在,将它替换
在复制文件时,如果源文件不存在,将产生NoSuchFileException异常。如果目标文件存在,将产生FileAlreadyExistsException异常。
        如果要覆盖目标文件,应指定REPLACE_EXISTING选项。
        目录也可以复制,但目录中的文件不能复制,也就是即使原来目录中包含文件,新目录也是空的。

        除了复制文件外,Files类还定义了在文件和流之间复制的方法

1.public static long copy(InputStream in,Path target,CopyOption...options):从输入流中将所有字节复制到目标文件中。
 2.public static long copy(Path source,OutputStream out):将源文件中的所有字节复制到输出流中
使用move方法可以移动或重命名文件和目录,格式如下:
public static Path move(Path source,Path target,CopyOption...options)
        如果目标文件存在,移动将失败,除非制定了REPLACE_EXISTING选项。空目录也可以被移动

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ShareX是一款免费开源的屏幕截图工具,同时也是一种便捷的文件共享工具。ShareX 13.5 Portable是其中的一个版本,它具备了许多特点和优势。 首先,ShareX 13.5 Portable是便携式的,不需要安装就可以在多台电脑间进行使用。只需将软件放在一个可移动的存储设备(如U盘)中,就可以在任何地方使用,并将其个性化设置和数据随身携带。 其次,ShareX 13.5 Portable具备强大的截图功能。它可以进行全屏、窗口、区域、甚至是长页面的截图,还可以对截图进行编辑、标记、添加文字或箭头等。通过这些功能,用户可以轻松地定制和美化自己的截图。 此外,ShareX 13.5 Portable还可以进行屏幕录制。它支持录制整个屏幕、选定的区域或者特定的窗口,还可以选择录制系统音频或者麦克风音频。这使得用户能够方便地录制教程、游戏视频、软件演示等等。 ShareX 13.5 Portable还具备了丰富的文件共享功能。它可以将截图和录屏直接上传到云存储服务(如Google Drive、Dropbox等),或者将文件通过FTP、SFTP或者WebDAV上传到自己的服务器。这使得用户可以轻松地分享文件链接给他人,并进行在线协作和编辑。 总之,ShareX 13.5 Portable是一款强大且方便的屏幕截图和文件共享工具。它不仅提供了多种截图和录屏选项,还具备了灵活的文件上传和共享功能。无论是个人用户还是专业工作者,都可以从中受益,并提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值