1)操作文件

Path和Files是在JavaSE7中新添加进来的类,它们封装了在用户机器上处理文件系统所需的所有功能。Path表示的一个目录名序列,其后还可以跟着一个文件名。路径中的第一个参数可以是根路径,以根路径开始的路径是绝对路径,否则就是相对路径。如果其路径不是合法路径则会抛出InvalidPathException异常。

绝对路径:

Path path=Paths.get("G:\\", "temp","temp.txt");

相对路径:

Path path2=Paths.get("temp", "temp.txt");

1.1组合或解析路径是司空见惯的操作,调用p.resolve(q)将按照下列规则返回一个路径:

A.如果q是绝对路径,则结果就是q

B.否则根据文件系统的规则将p后面跟着q作为结果

例子:

        Path p=Paths.get("G:\\", "temp");
Path q=Paths.get("temp.txt");
Path path=p.resolve(q);
System.out.println(path);
//结果:G:\temp\temp.txt p=Paths.get("G:\\");
q=Paths.get("H:\\","temp");
path=p.resolve(q);
System.out.println(path);
//结果:H:\temp

2)读写文件

Files类是普通文件操作变得快捷,但是比较适合处理中等长度的文件,如果要处理的文件长度比较大,或者二进制文件,那么还是应该使用熟知的流(Stream)或者读入器(Reader)/写出器(Writer)。

Files的readAllBytes方法读取文件返回字节数,readAllLines返回一个String类型的列表,调用write方法写入字节组或者String类型的列表。

例子:

        //字节数组写入文件内容
Path q=Paths.get("G:\\","temp.txt");
Files.write(q, "123123".getBytes("UTF-8")); //读出字节数组并打印出来
byte[]b=Files.readAllBytes(q);
System.out.println(new String (b)); //字符串写入文件内容
List<String>linesList=new ArrayList<String>();
linesList.add("11111111111111");
linesList.add("22222222222222");
linesList.add("33333333333333");
Files.write(q, linesList); //打印读取的数据
List<String>lineStrings=Files.readAllLines(q);
for (String itemString : lineStrings) {
System.out.println(itemString);
}

3)复制、移动和删除文件

Files提供很方便复制、移动、删除文件的方法,Files.copy(FromPaht,toPath),Files.move(fromPath,ToPath),Files.deleteIfExists(path),三个方法中可以增加一个StandardCopyOption枚举参数(REPLACE_EXISTING,COPY_ATTRIBUTES,ATOMIC_MOVE)。

        // 复制文件到指定路径
Path path=Paths.get("G:\\", "temp.txt");
Path path2=Paths.get("H:\\","temp.txt");
Files.copy(path, path2, StandardCopyOption.REPLACE_EXISTING); // 移动文件到指定路径(StandardCopyOption.ATOMIC_MOVE不允许跨磁盘移动文件,去掉其选项可以跨磁盘移动文件)
Path path3=Paths.get("F:\\", "temp.txt");
Files.move(path2, path3, StandardCopyOption.ATOMIC_MOVE); // 删除文件(最好使用deleteIfExists方法删除文件,不建议使用delete方法删除文件,因为若文件不存在报异常)
boolean isDelete=Files.deleteIfExists(path3);

4)获取文件信息

Files的一些静态方法获取文件的相关属性,例如:exists(文件是否存在),isHidden(是否是隐藏文件),isReadable(是否可以读),isWriteable(是否可写),isExecutable(是否是可执行文件),isRegularFile(是否是普通文件),isDirectory(是否是目录),isSymbolicLink(是否是符号链接)。当然readAttributes方法可以获取更多的属性例如最后访问时间,修改时间等在此不举例说明了。

I/O流、文件操作的更多相关文章

  1. 笔记:I/O流-文件操作

    Java库中使用 Path 和 Files 类封装了在用户机器上处理文件系统所需要的所有功能,可以使用Paths来获取一个具体的Path对象,来表示具体的路径. 路径 Path表示的是一个目录名序列, ...

  2. C#IO流文件操作

    文件流 创建文件流 读写文件的第一步就是创建文件流,流是一个用于数据传输的个对象,它是FileStream类型,在创建一个文件流是需要在他的构造中指定参数 语法: FileStream 文件流对象=n ...

  3. IO流-文件操作

    一.字节流读/写 文件 1.字节流 方式读取文件

  4. C#文件操作与编程

    一:驱动器System.IO 软盘,优盘,光盘,硬盘 DriveInfo/DriveType DriveInfo:确定有关驱动器的信息:盘符,类型,可用空间 DriveType:确定DriveInfo ...

  5. 流的文件操作(File)

    一.流的分类: 1.流按照方向分类:分为输入流和输出流,流的操作是相对于内存而言. 输入流的定义:当我们从数据源中将数据读取到内存中就称为输入流,也叫读取流. 输出流的定义:当我们将内存中处理好的数据 ...

  6. C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)

    文件流 FileStream  可读可写  大文件  释放 StreamReader 读取   释放 StreamWriter 写入   释放 using 中释放 File 可读可写  小文件 操作文 ...

  7. 文件操作总结:关于文本和二进制流(typeText&typeBinary)

    本人能力.精力有限,所言所感都基于自身的实践和有限的阅读.查阅,如有错误,欢迎拍砖,敬请赐教——博客园:钱智慧. 总结: CFile,其自身是不提供缓冲区的(?但CFile又有一个Flush,这一点目 ...

  8. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  9. JAVA中的I/O流以及文件操作

    一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中的流方式就像是建立在数据交换源和目的之间的一条通信路径. 数据源:计算机中的数据源是指可以 ...

  10. Java文件IO流的操作总结

    Java中的IO操作涉及到的概念及相关类很多,很容易弄混,今天特来整理总结一下,并附上一份完整的文件操作的代码. 概念解析 读和写 流就是管道,向管道里面写数据用输出流:write 从管道里面读数据, ...

随机推荐

  1. 使用 Python 设置数据的路径

    使用 Python 设置数据的路径 编程语言(如 Python)将反斜线 (\) 用作转义字符.例如,\n 表示换行符,\t 表示制表符.指定路径时,可使用正斜线 (/) 代替反斜线.使用两条反斜线( ...

  2. ListView下拉刷新和PullToRefreshListView实现

    下拉刷新-------    1.addHeaderView必须在setAdapter之前调用    2.将paddingTop设置一个headerView高度的负值去隐藏它        getHe ...

  3. C++之不带指针类的设计——Boolean

    经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> ...

  4. java中加密的方式概述

    加密是用一种特殊的算法改变原有的数据,使未经授权的用户即使获得了已经加密的信息,但不知其解密的方法,仍然无法了解信息的内容.     大体上分为单向加密和双向加密,双向加密又可分为对称加密和非对称加密 ...

  5. spring----对IoC和DI的理解

      学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和 ...

  6. Angular5+ 自定义表单验证器

    Angular5+ 自定义表单验证器 Custom Validators 标签(空格分隔): Angular 首先阐述一下遇到的问题: 怎样实现"再次输入密码"的验证(两个cont ...

  7. centos 7使用yum安装docker容器

    使用yum命令即可安装 yum install docker 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: [root@localhost ~]# systemctl ...

  8. ORA-01795: 列表中的最大表达式数为1000的解决方法

    IN中的数据量不能超过1000条. 解决方案:把条件分成多个少于1000的IN即: DELETEFROMT_MM_SECTION_SITE_UPDATEWHERE T.T_MM_SECTION_SL_ ...

  9. 使用错误的操作系统用户exp数据导致ORA-15186错误

    生产环境alert日志中出现如下错误:Fri Dec 30 14:28:28 2016Errors in file XXXXXX.trc:ORA-15186: ASMLIB error functio ...

  10. 如何处理错误信息 Pricing procedure could not be determined

    当给一个SAP CRM Quotation文档的行项目维护一个产品时,遇到如下错误信息:Pricing procedure could not be determined 通过调试得知错误消息在fun ...