I/O流、文件操作
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流、文件操作的更多相关文章
- 笔记:I/O流-文件操作
Java库中使用 Path 和 Files 类封装了在用户机器上处理文件系统所需要的所有功能,可以使用Paths来获取一个具体的Path对象,来表示具体的路径. 路径 Path表示的是一个目录名序列, ...
- C#IO流文件操作
文件流 创建文件流 读写文件的第一步就是创建文件流,流是一个用于数据传输的个对象,它是FileStream类型,在创建一个文件流是需要在他的构造中指定参数 语法: FileStream 文件流对象=n ...
- IO流-文件操作
一.字节流读/写 文件 1.字节流 方式读取文件
- C#文件操作与编程
一:驱动器System.IO 软盘,优盘,光盘,硬盘 DriveInfo/DriveType DriveInfo:确定有关驱动器的信息:盘符,类型,可用空间 DriveType:确定DriveInfo ...
- 流的文件操作(File)
一.流的分类: 1.流按照方向分类:分为输入流和输出流,流的操作是相对于内存而言. 输入流的定义:当我们从数据源中将数据读取到内存中就称为输入流,也叫读取流. 输出流的定义:当我们将内存中处理好的数据 ...
- C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)
文件流 FileStream 可读可写 大文件 释放 StreamReader 读取 释放 StreamWriter 写入 释放 using 中释放 File 可读可写 小文件 操作文 ...
- 文件操作总结:关于文本和二进制流(typeText&typeBinary)
本人能力.精力有限,所言所感都基于自身的实践和有限的阅读.查阅,如有错误,欢迎拍砖,敬请赐教——博客园:钱智慧. 总结: CFile,其自身是不提供缓冲区的(?但CFile又有一个Flush,这一点目 ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
- JAVA中的I/O流以及文件操作
一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中的流方式就像是建立在数据交换源和目的之间的一条通信路径. 数据源:计算机中的数据源是指可以 ...
- Java文件IO流的操作总结
Java中的IO操作涉及到的概念及相关类很多,很容易弄混,今天特来整理总结一下,并附上一份完整的文件操作的代码. 概念解析 读和写 流就是管道,向管道里面写数据用输出流:write 从管道里面读数据, ...
随机推荐
- 数组reduce和map方法
1.有一个长度为100的数组,请以优雅的方式求出该数组的前10个元素之和 var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],sum ...
- wxpython 按钮等事件的触发
1.按钮事件的触发 方法中第二个参数为event
- php 递归的生成目录函数
/** * 递归的生成目录 * @param str $dir 必须是目录 */ function mkdirs($dir) { return is_dir($dir) ?: mkdirs(dirna ...
- gamemakerstudio:Sprite的原点
对于某些类型的游戏,例如飞行射击游戏或者顶视角的2D游戏,通常会直接选取图片的中心做为原点.但对于<冰杖秘闻>这样的 2D ARPG 来说,会更多的从三维场景的角度来选择原点,即选择物品底 ...
- solidity语言12
View Functions 函数声明为视图,将无权修改状态 pragma solidity ^0.4.16; contract C { function f(uint a, uint b) publ ...
- Android端访问服务器核心代码
- 【Leetcode】【Easy】Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- Windows 2012R2远程桌面服务简介
一.远程桌面服务概述 远程桌面服务加快并扩展了到任何设备的桌面和应用程序部署,在帮助保护关键知识产权的安全的同时提高了工作人员的工作效率,简化了法规遵从性. 远程桌面服务启用虚拟机基础结构 (VDI) ...
- 1.GlusterFS 初识
一. GlusterFS 初始 1.1 分布式文件系统出现 计算机通过文件系统管理.存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储 ...
- 查看锁定的session信息脚本
查看当前被阻塞的对象和锁信息SELECT DISTINCT s1.inst_id BlockingInst, s1.sid BlockingSid, s1.seri ...