6.NIO2-Path、Paths、Files

NIO.2

jdk1.7中,java对 NIO 极大的扩展,主要增强的是对文件处理 和 文件系统特性的支持

关于其中一些API的使用

  1 public class TestNIO_2_Path_File {
  2
  3     //自动资源管理:自动关闭实现 AutoCloseable 接口的资源
  4     /*@Test
  5         public void test8(){
  6             try(FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"), StandardOpenOption.READ);
  7                     FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"), StandardOpenOption.WRITE, StandardOpenOption.CREATE)){
  8
  9                 ByteBuffer buf = ByteBuffer.allocate(1024);
 10                 inChannel.read(buf);
 11
 12             }catch(IOException e){
 13
 14             }
 15         }*/
 16
 17     /*
 18     Files常用方法:用于操作内容
 19         SeekableByteChannel newByteChannel(Path path, OpenOption…how) : 获取与指定文件的连接,how 指定打开方式。
 20         DirectoryStream newDirectoryStream(Path path) : 打开 path 指定的目录
 21         InputStream newInputStream(Path path, OpenOption…how):获取 InputStream 对象
 22         OutputStream newOutputStream(Path path, OpenOption…how) : 获取 OutputStream 对象
 23      */
 24     @Test
 25     public void test7() throws IOException{
 26         SeekableByteChannel newByteChannel = Files.newByteChannel(Paths.get("1.jpg"), StandardOpenOption.READ);
 27
 28         DirectoryStream<Path> newDirectoryStream = Files.newDirectoryStream(Paths.get("e:/"));
 29
 30         for (Path path : newDirectoryStream) {
 31             System.out.println(path);
 32         }
 33     }
 34
 35     /*
 36     Files常用方法:用于判断
 37         boolean exists(Path path, LinkOption … opts) : 判断文件是否存在
 38         boolean isDirectory(Path path, LinkOption … opts) : 判断是否是目录
 39         boolean isExecutable(Path path) : 判断是否是可执行文件
 40         boolean isHidden(Path path) : 判断是否是隐藏文件
 41         boolean isReadable(Path path) : 判断文件是否可读
 42         boolean isWritable(Path path) : 判断文件是否可写
 43         boolean notExists(Path path, LinkOption … opts) : 判断文件是否不存在
 44         public static <A extends BasicFileAttributes> A readAttributes(Path path,Class<A> type,LinkOption... options) : 获取与 path 指定的文件相关联的属性。
 45      */
 46
 47     @Test
 48     public void test6() throws IOException{
 49         Path path = Paths.get("1.jpg");
 50 //        System.out.println(Files.exists(path, LinkOption.NOFOLLOW_LINKS));
 51
 52         BasicFileAttributes readAttributes = Files.readAttributes(path, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
 53         System.out.println(readAttributes.creationTime());
 54         System.out.println(readAttributes.lastModifiedTime());
 55
 56         DosFileAttributeView fileAttributeView = Files.getFileAttributeView(path, DosFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
 57
 58         fileAttributeView.setHidden(false);
 59     }
 60
 61     /*
 62     Files常用方法:
 63         Path copy(Path src, Path dest, CopyOption … how) : 文件的复制
 64         Path createDirectory(Path path, FileAttribute<?> … attr) : 创建一个目录
 65         Path createFile(Path path, FileAttribute<?> … arr) : 创建一个文件
 66         void delete(Path path) : 删除一个文件
 67         Path move(Path src, Path dest, CopyOption…how) : 将 src 移动到 dest 位置
 68         long size(Path path) : 返回 path 指定文件的大小
 69      */
 70
 71     @Test
 72     public void test5() throws IOException{
 73         Path path2 = Paths.get("E:/jucAndnioCode/NIO/1.jpg");
 74
 75         System.out.println(Files.size(path2));
 76
 77 //        Files.move(path1, path2, StandardCopyOption.ATOMIC_MOVE);
 78     }
 79
 80     @Test
 81     public void test4() throws IOException{
 82         Path dir = Paths.get("e:/nio/nio2");
 83 //        Files.createDirectory(dir);
 84
 85         Path file = Paths.get("E:/jucAndnioCode/NIO/1.jpg");
 86 //        Files.createFile(file);
 87
 88         Files.deleteIfExists(file);
 89     }
 90
 91     @Test
 92     public void test3() throws IOException{
 93         Path path1 = Paths.get("1.jpg");
 94         Path path2 = Paths.get("4.jpg");
 95
 96         Files.copy(path1, path2, StandardCopyOption.REPLACE_EXISTING);
 97     }
 98
 99     /*
100     Paths 提供的 get() 方法用来获取 Path 对象:
101         Path get(String first, String … more) : 用于将多个字符串串连成路径。
102     Path 常用方法:
103         boolean endsWith(String path) : 判断是否以 path 路径结束
104         boolean startsWith(String path) : 判断是否以 path 路径开始
105         boolean isAbsolute() : 判断是否是绝对路径
106         Path getFileName() : 返回与调用 Path 对象关联的文件名
107         Path getName(int idx) : 返回的指定索引位置 idx 的路径名称
108         int getNameCount() : 返回Path 根目录后面元素的数量
109         Path getParent() :返回Path对象包含整个路径,不包含 Path 对象指定的文件路径
110         Path getRoot() :返回调用 Path 对象的根路径
111         Path resolve(Path p) :将相对路径解析为绝对路径
112         Path toAbsolutePath() : 作为绝对路径返回调用 Path 对象
113         String toString() : 返回调用 Path 对象的字符串表示形式
114  */
115
116     @Test
117     public void test2(){
118         Path path = Paths.get("e:/nio/hello.txt");
119
120         System.out.println(path.getParent());
121         System.out.println(path.getRoot());
122
123 //        Path newPath = path.resolve("e:/hello.txt");
124 //        System.out.println(newPath);
125
126         Path path2 = Paths.get("1.jpg");
127         Path newPath = path2.toAbsolutePath();
128         System.out.println(newPath);
129
130         System.out.println(path.toString());
131     }
132
133     @Test
134     public void test1(){
135         Path path = Paths.get("e:/", "nio/hello.txt");
136
137         System.out.println(path.endsWith("hello.txt"));
138         System.out.println(path.startsWith("e:/"));
139
140         System.out.println(path.isAbsolute());
141         System.out.println(path.getFileName());
142
143         for (int i = 0; i < path.getNameCount(); i++) {
144             System.out.println(path.getName(i));
145         }
146     }
147 }
时间: 2024-11-05 03:07:53

6.NIO2-Path、Paths、Files的相关文章

12、NIO--Path、、Paths、Files

NIO.2 随着 JDK 7 的发布,Java对NIO进行了极大的扩展,增强了对文件处理和文件系统特性的支持,以至于我们称他们为 NIO.2.因为 NIO 提供的一些功能,NIO已经成为文件处理中越来越重要的部分 Path 与 Paths ? java.nio.file.Path 接口代表一个平台无关的平台路径,描述了目 录结构中文件的位置.? Paths 提供的 get() 方法用来获取 Path 对象: ? Path get(String first, String … more) : 用于

Java基础教程——File类、Paths类、Files类

File类 File类在java.io包中.io代表input和output,输入和输出. 代表与平台无关的文件和目录. 可以新建.删除.重命名,但不能访问文件内容. File类里的常量: import java.io.File; public class TestFileConst { public static void main(String[] args) { String s = ""; // 文件分隔符:win反斜杠(\)linux正斜杠(/) s = File.separ

NIO2.0之copy、delete和move

转自:http://www.importnew.com/15884.html Java 7引入了NIO.2,NIO.2是继承自NIO框架,并增加了新的功能(例如:处理软链接和硬链接的功能).这篇帖子包括三个部分,我将使用NIO.2的一些示例,由此向大家演示NIO.2的基本使用方法. 文件拷贝 Q:怎样拷贝一个文件? A:你可以使用java.nio.file.Files类的public static Path copy(Path source, Path target, CopyOption- o

C#文件与流(FileStream、StreamWriter 、StreamReader 、File、FileInfo、Directory、directoryInfo、Path、Encoding)

(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo.Path.Encoding) C#文件与流(FileStream.StreamWriter .StreamReader .File.FileInfo.Di,有需要的朋友可以参考下. 文件与流(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo

JDK(SE、EE、ME) + JRE + (PATH + JAVA_HOME + CLASS_PATH)安装配置详解【原创】

我是一个Java入门有段时间的程序员了,但是作为培训机构出来的,难免很多东西只知道照葫画瓢过,其实真正JDK是什么没有研究过.只是知道我们安装了才能进行Java开发. 所以我就来学习一下,并且补齐一下不明的真相.o(^▽^)o 一.JDK是什么.包含哪些东西.干什么用的.SDK是什么? JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). (以下的都是SDK不是JDK)JDK是独一无二的东西,一下的版本都是在JDK的基础上扩展出来的. SE(J2SE

变量的声明及其作用域、脚本、修改环境变量$PATH【:VALUE】

变量的声明及其作用域 本地变量 VARNAME=VALUE:作用域为整个bash进程[打开新的shell进程,没有该变量] [root@jiakang a]# A=123 [root@jiakang a]# bash [root@jiakang a]# echo $A [root@jiakang a]# 局部变量 local VARNAME=VALUE:作用域为当前代码段 环境变量 作用域为当前shell及其子进程[打开一个shell就是一个进程] export VARNAME=VALUE或者

Struts2——namespace、action、以及path问题

简单的介绍下Struts2中的几个简单的问题(namespace.action.以及path问题) namespace(命名空间) Namespace决定了action的访问路径,默认为"",意味着可以访问所有目录下的/ass/sss/ss/index;囊括了所有package处理不了的action: namespace可以写成/,或是/xx./xx/yy,对应action访问路径为/index.action,/xx/index.action或是/xx/yy/index.action

UNIX高级环境编程(4)Files And Directories - umask、chmod、文件系统组织结构和链接

本篇主要介绍文件和文件系统中常用的一些函数,文件系统的组织结构和硬链接.符号链接. 通过对这些知识的了解,可以对Linux文件系统有更为全面的了解. ? 1 umask函数 之前我们已经了解了每个文件与权限相关的9个位(bit),我们现在来了解一下当每个进程创建文件时默认会设置该文件的文件权限(the file mode creation mask). umask函数设置该进程默认创建文件的权限掩码(the file mode creation mask),并且返回之前的权限掩码值. #incl

JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解

JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH.下面逐个分析. JAVA_HOME 指向的是JDK的安装路径,如C:\jdk1.5.0_06,在这路径下你应该能够找到bin.lib等目录.值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX