java 1.7 新io 实践 NIO2
Files 类使用
package com.xinyu.test;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;
import java.util.List;
public class FileTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Files创建,删除
// Path path =Paths.get("D:/jun/xinyu.txt");
// try {
// Files.createFile(path);
// Files.deleteIfExists(path);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//Files复制,移动
// try {
// Path path = Paths.get("D:/jun/psb (4).jpg");
// Path target =Paths.get("D:/test/jun.jpg");
// Path parent = target.getParent();
// boolean exists = parent.toFile().exists();
// if(!exists){
// Files.createDirectories(parent);
// }
//// Files.copy(path, target, StandardCopyOption.REPLACE_EXISTING);
// Files.move(path, target, StandardCopyOption.REPLACE_EXISTING);
//
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//查看文件属性
// Path path = Paths.get("D:/liebao/debug.log");
// try {
// System.out.println(Files.getLastModifiedTime(path));
// System.out.println(Files.size(path));
// System.out.println(Files.isDirectory(path));
// System.out.println(Files.readAttributes(path, "*"));
// System.out.println();
// System.out.println();
// System.out.println(19_12);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//简化的文件读写
// Path path =Paths.get("D:/liebao/debug.log");
// try {
// List<String> readAllLines = Files.readAllLines(path,StandardCharsets.UTF_8);
// for (String entry : readAllLines){
// System.out.println(entry);
// }
//
// byte[] readAllBytes = Files.readAllBytes(path);
// System.out.println(new String(readAllBytes));
//
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//读取文件的最后几个字节
Path path=Paths.get("D:/liebao/test.txt");
try {
FileChannel open = FileChannel.open(path, StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(1024);
//从第23个字节开始读
// int read = open.read(buffer,open.size()-(open.size()-23));/
// open.read(buffer, 2, 10);
// System.out.println(new String(buffer.array()));
// System.out.println(open.size());
//下面的一直报错,不管了先
ByteBuffer[] dsts = new ByteBuffer[12];
System.out.println(dsts.length);
System.out.println(open == null);
open.read(dsts, 1, 3);
System.out.println(dsts[0].array());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Paths类的使用:
package com.xinyu.test;
import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class PathTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Path 基本操作
// Path path = Paths.get("D:/jun");
// System.out.println(path.getFileName());
// System.out.println(path.getFileSystem());
// System.out.println(path.getNameCount());
// System.out.println(path.getParent());
//path 的合并
// Path path = Paths.get("D:/");
// Path resolve = path.resolve("jun");
// System.out.println(resolve.getFileName());
// System.out.println(resolve.getFileSystem());
// System.out.println(resolve.getNameCount());
// System.out.println(resolve.getParent());
//从path到path2的相对路径,输出:..\cebdoc
// Path path = Paths.get("D:/jun");
// Path path2 = Paths.get("D:/cebdoc");
// Path relativize = path.relativize(path2);
// System.out.println(relativize);
//path的一些其他操作,包括startWith,endWith
// Path path = Paths.get("D:/jun");
// Path path2 = Paths.get("D:/cebdoc");
// boolean startsWith = path.startsWith(path2);
// System.out.println(startsWith);
//jdk1.7之后 path 和file是可以相互转换的
// File file = new File("D:/jun");
// Path path3 = file.toPath();
// file =path3.toFile();
//path遍历目录 只输出制定的文件 列出目录下的所有txt文件
// Path path = Paths.get("D:\\jun");
// try {
// DirectoryStream<Path> stream = Files.newDirectoryStream(path,"*.txt");
// for (Path entry : stream){
// System.out.println(entry.getFileName());
// }
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//path遍历目录,以及目录下的目录 找出是所有的doc文件
class FindJavaVisitor extends SimpleFileVisitor<Path>{
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
// TODO Auto-generated method stub
if(file.toString().endsWith(".txt")){
System.out.println(file.getFileName());
}
return super.visitFile(file, attrs);
}
}
Path path = Paths.get("D:\\software");
try {
Files.walkFileTree(path, new FindJavaVisitor());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文件观察服务的使用
WatchService
package com.xinyu.test;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
public class FilWatchServicesTest {
public static void main(String[] args) {
try {
WatchService watchService = FileSystems.getDefault().newWatchService();
Path path =Paths.get("D:/jun");
path.register(watchService,StandardWatchEventKinds.ENTRY_MODIFY);
while (true) {
WatchKey take = watchService.take();
for (WatchEvent<?> event : take.pollEvents()) {
if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
System.out.println("i is delete");
}
if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
System.out.println("i is modify");
}
}
take.reset();
}
} catch (IOException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java 1.7 新io 实践 NIO2的更多相关文章
- java 21 - 15 新IO流 NIO
1:JDK4 新IO要了解的类 Buffer(缓冲),Channer(通道) 2:JDK7 要了解的新IO类 Path:与平台无关的路径. Paths:包含了返回Path的静态方法. public ...
- Java 新IO
NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...
- JAVA(六)数据库/网络编程/新IO
成鹏致远 | lcw.cnblog.com |2014-02-05 数据库 1.JDBC概述 JDBC(Java Database Connectivity,Java数据库连接)提供了一种与平台无关的 ...
- Java -- 新IO -- 目录
20.1 Java 新IO简介 20.2 缓冲区与Buffer 例:演示缓冲区的操作流程 Class : IntBufferDemo01 20.2.2 深入缓冲区操作 20.2.3 创建子缓冲区 20 ...
- Java 8特性尝鲜:新新IO
Java 8特性尝鲜:新新IO 在这个专题前面的文章中,我们已经看到,使用Java8的lambda表达式对现有的JDK1.2 I/O库的提升,主要是可以使用lambda表达式来构造java.io.Fi ...
- java 提供了哪些IO方式
今天听了杨晓峰老师的java 36讲,感觉IO这块是特别欠缺的,所以讲义摘录如下: 欢迎大家去订阅: 本文章转自:https://time.geekbang.org/column/article/83 ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- [转] Java 8的新特性
简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性,并用实际的例子 ...
- Java 8的新特性—终极版
作者:杜琪[译] 原文链接:http://www.jianshu.com/p/5b800057f2d8 1. 简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本 ...
随机推荐
- python列表生成式、列表推导式
运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁. 格式 [x for x in 内容] [x for x in 内容 if 条件] 1:要把生成的元素 ...
- 日志滚动与cron调度
日志滚动与cron调度 1.日志滚动 nginx默认日志不能进行滚动,始终写入到一个文件中,即access.log.编写日志滚动的shell脚本,并使用linux的cron定时调度周期性进行日志文件滚 ...
- CentOS7下SSH服务学习笔记
测试环境: [root@nmserver-7 ~]# uname -aLinux nmserver-7.test.com 3.10.0-514.el7.centos.plus.i686 #1 SMP ...
- VR社交软件测试-AltspaceVR
该VR社交软件中的主界面主要分为,Events:事件:Activities:多人游戏:Words:别人创建的虚拟世界.进入游戏后可以进入场景与世界各地的人进行交谈,以虚拟3D人物的方式显示用户,具有较 ...
- Open XML的上传、下载 、删除 ......文件路径
/// <summary> /// Get download site, if download tempfolder not existed, create it first /// & ...
- SPOJ - LIS2 Another Longest Increasing Subsequence Problem
cdq分治,dp(i)表示以i为结尾的最长LIS,那么dp的递推是依赖于左边的. 因此在分治的时候需要利用左边的子问题来递推右边. (345ms? 区间树TLE /****************** ...
- 2.NBU管理NetBackup
2管理NetBackup2.1NetBackup作业任务监视 NetBackup任务监视器可以监视备份.恢复和归档任务的状态,也可以监视NetBackup本身数据库的备份. 2.1.1Activity ...
- node.js 下使用 util.inherits 来实现继承
上一篇博客说到了node.js继承events类实现事件发射和事件绑定函数,其中我们实现了一个公用基类 _base ,然后在模型中差异化的定义了各种业务需要的模型并继承 _base 公共基类.但是其中 ...
- python-列表常用功能介绍
一.列表(list) 1.定义列表 names = [] #定义空列表 names = ['a','b','c'] #定义非空列表 2.访问列表中元素 >>> names = ['a ...
- 八数码(map版)
八数码 map真是个奇技淫巧好东西 可以十分简单的实现hash,当然速度就不敢保证了 因为九位数不算很大,完全可以用int存下,所以便将八数码的图像转换成一个int型的数字 #include<i ...