企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 简介 | IO | NIO | | --- | --- | | 面向流,单向的 | 面向缓冲区,通道是单向的,也可以是双向的 | | 阻塞io | 非阻塞io | | 无 | 选择器 | 通道可以是单向的,也可以是双向的. 一个channel类可能实现定义read()方法的ReadableByteChannel接口,而另一个Channel类也许实现WritableByteChannel接口以提供write()方法. 实现这两个接口其中之一的类都是单向的,只能在一个方向上传输数据. 如果一个类同时实现这两个接口,那么他们是双向的,可以双向传输数据,比如ByteChannel. # Paths File类,大多数方法出错时仅仅返回失败,并不会提供异常信息. path可以看做file类的升级版本,实际引用的资源可以不存在. 以前io操作是这样写 ~~~ File file = new File("index.html"); ~~~ 在java7可以这样写 ~~~ Path path = Paths.get("index.html"); ~~~ ~~~ Path path = Paths.get("/user/", "index.html"); ~~~ **Paths类提供的静态get()方法用来获取Path对象** ~~~ //用于将多个字符串串连成路径 static Path get(String first, String... more); //返回指定uri对应的path路径 static Path get(URI uri); ~~~ # Path 常用方法 ~~~ //返回调用Path对象的字符串表示形式 String toString() //判断是否以path路径开始 boolean startsWith(String path) //判断是否以path路径结束 boolean endsWith(String path) //判断是否是绝对路径 boolean isAbsolute() //返回Path对象包含整个路径,不包含Path对象指定的文件路径 Path getParent() //返回调用Path对象的根路径 Path getRoot() //返回与调用Path对象关联的文件名 Path getFileName() //返回path根目录后面元素的数量 int getNameCount() //返回指定索引位置idx的路径名称 Path getName(int idx) //作为绝对路径返回调用Path对象 Path toAbsolutePath() //合并两个路径,返回合并后的路径对应的Path对象 Path resolve(Path p) //将path转化为File类的对象 File toFile() ~~~ # Files 用于操作文件或者目录的工具类 ~~~ // Path copy(Path src, Path dest, CopyOption … how) : 文件的复制 //要想复制成功,要求path1对应的物理上的文件存在。path1对应的文件没有要求。 // Files.copy(path1, path2, StandardCopyOption.REPLACE_EXISTING); // Path createDirectory(Path path, FileAttribute<?> … attr) : 创建一个目录 //要想执行成功,要求path对应的物理上的文件目录不存在。一旦存在,抛出异常。 Path path3 = Paths.get("d:\\nio\\nio1"); // Files.createDirectory(path3); // Path createFile(Path path, FileAttribute<?> … arr) : 创建一个文件 //要想执行成功,要求path对应的物理上的文件不存在。一旦存在,抛出异常。 Path path4 = Paths.get("d:\\nio\\hi.txt"); // Files.createFile(path4); // void delete(Path path) : 删除一个文件/目录,如果不存在,执行报错 // Files.delete(path4); // void deleteIfExists(Path path) : Path对应的文件/目录如果存在,执行删除.如果不存在,正常执行结束 Files.deleteIfExists(path3); // Path move(Path src, Path dest, CopyOption…how) : 将 src 移动到 dest 位置 //要想执行成功,src对应的物理上的文件需要存在,dest对应的文件没有要求。 // Files.move(path1, path2, StandardCopyOption.ATOMIC_MOVE); // long size(Path path) : 返回 path 指定文件的大小 long size = Files.size(path2); System.out.println(size); ~~~