流与文件:NIO.2的介绍和使用

传统的Java里,只有一个File类,即代表文件,又代表目录。Java 7新增了如下API来访问文件

Path  - 接口,代表一个平台无关的目录。提供了大量的方法来操作目录。

Paths - 工具类。所有方法都是static的。

Files - 操作文件的工具类。提供了大量的方法来操作文件。该类所包含的大量方法可能与我们日常一般的期望有些出入。

早期的Java只提供了File类来访问文件,其功能有限且性能不高,NIO.2提供了Path接口以及Paths和Files工具类来访问文件系统。

1.Path接口和Paths工具类

java.nio.file.Path

Path接口代表与平台无关的路径.

An object that may be used to locate a file in a file system. It will typically represent a system dependent file path.

java.nio.file.Paths

This class consists exclusively of static methods that return a Path by converting a path string or URI.

部分方法介绍:

1.getNameCount

int getNameCount()

返回当前Path对象里包含的路径数量。

Returns the number of name elements in the path.

Returns the number of elements in the path, or 0 if this path only represents a root component.

2.getRoot

Path getRoot()

获取当前Path对象的根路径

Returns the root component of this path as a Path object, or null if this path does not have a root component.

Returns:a path representing the root component of this path, or null.

3.toAbsolutePath

Path toAbsolutePath()

获取当前Path对象对应的绝对路径。

Returns a Path object representing the absolute path of this path.

If this path is already absolute then this method simply returns this path.

Otherwise, this method resolves the path in an implementation dependent manner,

typically by resolving the path against a file system default directory.

Depending on the implementation, this method may throw an I/O error if the file system is not accessible.

Returns:a Path object representing the absolute path.

2.Files工具类

操作文件的工具类。由于Files工具类强大的功能,可以使用Files类来简化文件IO。

java.nio.file.Files

public final class Files extends Object

This class consists exclusively of static methods that operate on files, directories, or other types of files.

In most cases, the methods defined here will delegate to the associated file system provider to perform the file operations.

下面就通过几个简单的操作演示NIO的强大功能吧!

package test.jse.io.nio2.demo1;

import java.io.FileOutputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class NIO2Test
{

	public static void main(String[] args) throws Exception
	{
		//testPath();
		testFiles();
	}
	public static void testPath()
	{
		//以当前路径创建Path对象
		Path path=Paths.get(".");
		System.out.println("当前Path对象里包含的路径数量: "+path.getNameCount());
		System.out.println("当前Path对象的根路径: "+path.getRoot());
		//获取path对应的绝对路径
		Path absolutePath=path.toAbsolutePath();
		System.out.println("path对应的绝对路径: "+absolutePath);
		System.out.println("当前absolutePath对象里包含的路径数量: "+absolutePath.getNameCount());
	}
	public static void testFiles() throws Exception
	{
		//复制文件
		Files.copy(Paths.get("src/test/jse/io/nio2/demo1/NIO2Test.java"),new FileOutputStream("src/test/jse/io/nio2/demo1/new_NIO2Test.java"));
		//判断NIO2Test.java文件是否为隐藏文件
		System.out.println("NIO2Test.java文件是否为隐藏文件:\t"+Files.isHidden(Paths.get("src/test/jse/io/nio2/demo1/NIO2Test.java")));
		//一次读取NIO2Test.java文件的所有行
		List<String> lines=Files.readAllLines(Paths.get("src/test/jse/io/nio2/demo1/NIO2Test.java"), Charset.forName("gbk"));
		for (String line : lines)
		{
			System.out.println(line);
		}
	}
}

API文档中还有大量的方法可以简化流与文件的操作,希望读者朋友们多多尝试与总结,并在实际开发中运用!

时间: 2024-10-15 01:25:13

流与文件:NIO.2的介绍和使用的相关文章

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

[转] linux系统文件流、文件描述符与进程间关系详解

http://blog.sina.com.cn/s/blog_67b74aea01018ycx.html linux(unix)进程与文件的关系错综复杂,本教程试图详细的阐述这个问题. 包括: 1.linux多/单进程与多/单文件对于文件流和描述符在使用时的关联情况及一些需要注意的问题. 2.fork,vfork流缓冲等对文件操作的影响. 1.linux文件系统结构 首先补充一点基础知识,了解一下linux文件系统.如下图所示: 图1 磁盘,分区和文件系统 应该明白,上图所示结构是硬盘中文件存放

I/O流与文件

概述 一.何为I/O 外围设备分为,存储设备和输入/输出设备: 存储设备用于存储信息,如磁盘.U盘.光盘.磁带等,数据以文件形式保存在这些存储设备中: 输入/输出设备分为,输入设备和输出设备:输入设备指计算机接收数据的来源设备,如键盘.鼠标.扫描仪等:输出设备指计算机处理完毕的数据送往外部设备,如显示器.打印机等: I/O的中心是内存:在内存中,数据往外输送,即为输出:数据从外面进来,即为输入: 二.标准I/O流cin和cout 头文件iostream中,定义了两个流类:输入流类istream和

java解析xml文件四种方式介绍、性能比较和基本使用方法

一.介绍: 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不

week12 201621044079 流与文件

作业12-流与文件 流与文件参考文件 正则表达式参考资料 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何使用流与文件改造你的系统.文件中数据的格式如何? 2.2 简述系统中文件读写部分使用了流与文件相关的什么接口与类?为什么要用这些接口与类? 2.3 截图读写文件相关代码.关键行需要加注释. 选做:3. 尝试为计算机学院网站设计一个搜索引擎系统(组队完成)

Java之字符流读写文件、文件的拷贝

字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int data = reader.read(); // 读取一个字符,返回该字符代表的整数,若到达流的末尾,返回-1 字符流读数据 – 按字符数组读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: // 读取

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

使用摘要流获取文件的MD5

摘要流是过滤流的一种,使用它可以再读取和写入流时获取流的摘要信息(MD5/SHA). 使用摘要流包装流时,需要额外传递一个MessageDigest对象, MessageDigest md=MessageDigest.getInstance("MD5"); DigestInputStream dis=new DigestInputStream(in, md); 摘要流复写了流的read.write方法,方法内部调用MessageDigest对象的upate()来更新摘要信息 publi