NIO目录
前言
NIO可以和IO做一下比较
一、是什么?
IO: 阻塞式IO
NIO: JDK1.4–>JDK1.7 非阻塞式的IO,最开始JDK1.4的时候不是那么成熟应用并不广,后来慢慢进行改版到JDK1.7已经比较容易看到了
NIO的速度和效率应该会更高一些
下面是NIO的一些比较重要的API
Paths:工具类
Path(接口):类似于File,用路径名表示一个目录或文件
,用来创建Path接口的对象
Files工具类
操作文件或目录的工具类:
(1)Files.copy(src, dest, StandardCopyOption.REPLACE_EXISTING);
现成的copy文件方法,如果有就替换
(2)delete(Path path) 功能类似于File类的delete()
不同的地方是会报异常,当文件不存在时
还有很多,可以自己在API里面看
File的delete是存在就删除,不存在就啥都不干
NIO中的delete(Path path) 存在就删除,不存在就抛异常,反馈给我们,我们自己再做处理
注意:当文件不存在时,报异常有时候是更好的
(3)move(Path source, Path target, CopyOption… options)
(4)List readAllLines(Path path, Charset cs)
后面还有很多新版NOI……,API里面有很多介绍,这里就不再赘述
二、代码
public class TestNIO {
@Test
public void test06() throws IOException{
Path file = Paths.get("testIO","java","2.txt");
List<String> allLines = Files.readAllLines(file, Charset.forName("UTF-8"));
for (String string : allLines) {
System.out.println(string);
}
}
@Test
public void test05() throws IOException{
Path src = Paths.get("2.txt");
Path dest = Paths.get("testIO","java","2.txt");
Files.move(src, dest, StandardCopyOption.REPLACE_EXISTING);
}
@Test
public void test04() throws IOException{
File file = new File("1.txt");
file.delete();
}
@Test
public void test03() throws IOException{
Path src = Paths.get("1.txt");
Files.delete(src);
}
@Test
public void test02() throws IOException{
Path src = Paths.get("1.txt");
Path dest = Paths.get("2.txt");
Files.copy(src, dest, StandardCopyOption.REPLACE_EXISTING);
}
@Test
public void test01(){
Path file = Paths.get("testIO", "java" ,"1.txt");
int count = file.getNameCount();
System.out.println(count);
Path name = file.getName(0);
System.out.println(name);
}
}