当前位置: 首页 > news >正文

怎么做一淘宝客网站吗个人网上怎么接装修活

怎么做一淘宝客网站吗,个人网上怎么接装修活,住房建设部官方网站专家注册,广告公司图片这篇文章是我关于Java 7 java.nio.file软件包的系列文章的继续#xff0c;这次涵盖了文件的复制和移动以及完整的目录树。 如果您曾经对Java缺少copy和move方法感到沮丧#xff0c;那么请继续阅读#xff0c;以免麻烦。 涵盖范围中包括非常有用的Files.walkFileTree方法。 但… 这篇文章是我关于Java 7 java.nio.file软件包的系列文章的继续这次涵盖了文件的复制和移动以及完整的目录树。 如果您曾经对Java缺少copy和move方法感到沮丧那么请继续阅读以免麻烦。 涵盖范围中包括非常有用的Files.walkFileTree方法。 但是在我们深入研究主要内容之前需要一些背景信息。 路径对象 路径对象代表可能包含或不包含文件的目录序列。 有三种方法构造Path对象 FileSystems.getDefault。getPath字符串优先字符串…更多 Paths.getString pathString…更多调用FileSystems.getDefault。getPath的便捷方法 在java.io.File对象上调用toPath方法 从现在开始在所有示例中我们将使用Paths.get方法。 以下是创建Path对象的一些示例 //Path string would be /foo Paths.get(/foo); //Path string /foo/bar Paths.get(/foo,bar); 要操作Path对象可以使用Path.resolve和Path.relativize方法。 这是使用Path.resolve的示例 //This is our base path /foo Path base Paths.get(/foo); //filePath is /foo/bar/file.txt while base still /foo Path filePath base.resolve(bar/file.txt); 使用Path.resolve方法会将给定的String或Path对象附加到调用Path的末尾除非给定的String或Path表示绝对路径否则将返回给定的路径例如 Path path Paths.get(/foo); //resolved Path string is /usr/local Path resolved path.resolve(/usr/local); Path.relativize以相反的方式工作返回一个新的相对路径如果根据调用的Path解析该路径则会得到相同的Path字符串。 这是一个例子 // base Path string /usrPath base Paths.get(/usr);// foo Path string /usr/fooPath foo base.resolve(foo);// bar Path string /usr/foo/barPath bar foo.resolve(bar);// relative Path string foo/barPath relative base.relativize(bar); Path类上另一个有用的方法是Path.getFileName它返回此Path对象表示的最远元素的名称该名称是实际文件或目录。 例如 //assume filePath constructed elsewhere as /home/user/info.txt //returns Path with path string info.txt filePath.getFileName()//now assume dirPath constructed elsewhere as /home/user/Downloads //returns Path with path string Downloads dirPath.getFileName() 在下一节中我们将研究如何将Path.resolve和Path.relativize与Files类一起使用来复制和移动文件。 文件类 Files类由使用Path对象处理文件和目录的静态方法组成。 尽管Files类中有50多种方法但目前我们仅讨论复制和移动方法。 复制文件 要将一个文件复制到另一个文件您可以使用对名称有任何猜测吗Files.copy方法– copy路径源Path目标CopyOption…选项非常简洁并且没有匿名内部类我们确定它是Java吗 options参数是枚举用于指定应如何复制文件。 实际上有2个不同的Enum类LinkOption和StandardCopyOption但是都实现CopyOption接口。这是Files.copy的可用选项列表 LinkOption.NOFOLLOW_LINKS StandardCopyOption.COPY_ATTRIBUTES StandardCopyOption.REPLACE_EXISTING 还有一个StandardCopyOption.ATOMIC_MOVE枚举但是如果指定了此选项则抛出UsupportedOperationException。 如果未指定任何选项则默认为在目标文件存在或为符号链接的情况下引发错误。 如果路径对象是目录那么将在目标位置中创建一个空目录。 请稍等在引言中没有说我们可以复制目录的全部内容吗答案仍然是肯定的而且即将到来这是使用Path使用Path对象将文件复制到另一个文件的示例.resolve和Path.relativize方法 Path sourcePath ...Path basePath ...Path targetPath ...Files.copy(sourcePath, targetPath.resolve(basePath.relativize(sourcePath)); 移动文件 移动文件同样简单明了– move路径源路径目标CopyOption…选项 可用的StandardCopyOptions枚举是 StandardCopyOption.REPLACE_EXISTING StandardCopyOption.ATOMIC_MOVE 如果使用StandardCopyOption.COPY_ATTRIBUTES调用Files.move则会引发UnsupportedOperationException。 可以在空目录上调用Files.move或者如果它不需要移动目录内容例如重新命名则调用将成功否则将抛出IOException我们将在下一节中看到如何移动非空目录。 如果目标文件已经存在则默认为引发Exception。 如果源是符号链接则链接本身将被移动而不是链接的目标。 这是Files.move的示例再次使用Path.relativize和Path.resolve方法 Path sourcePath ...Path basePath ...Path targetPath ...Files.move(sourcePath, targetPath.resolve(basePath.relativize(sourcePath));复制和移动目录 Files.walkFileTree是在Files类中找到的更有趣和有用的方法之一。 walkFileTree方法执行文件树的深度优先遍历。 有两个签名 walkFileTree路径开始设置选项int maxDepthFileVisitor访问者 walkFileTree路径开始FileVisitor访问者 Files.walkFileTree的第二个选项使用EnumSet.noneOfFileVisitOption.class和Integer.MAX_VALUE调用第一个选项。 在撰写本文时只有一个文件访问选项– FOLLOW_LINKS。 FileVisitor是一个接口具有定义的四个方法 preVisitDirectoryT dirBasicFileAttributes attrs在遍历所有整数之前调用目录。 visitFileT fileBasicFileAttributes attrs调用目录中的文件。 postVisitDirectoryT dirIOException exc仅在遍历所有文件和子目录之后才调用。 visitFileFailedT fileIOException exc调用了无法访问的文件 所有方法都返回四个可能的FileVisitResult枚举之一 FileVistitResult.CONTINUE FileVistitResult.SKIP_SIBLINGS继续而不遍历目录或文件的同级 FileVistitResult.SKIP_SUBTREE继续而不遍历目录内容 FileVistitResult.TERMINATE 为了使生活更轻松有一个默认的FileVisitor实现即SimpleFileVisitorvalidate参数不为null并返回FileVisitResult.CONTINUE可以将其子类化您可以覆盖您需要使用的方法。 让我们看一个用于复制整个目录结构的基本示例。 复制目录树示例 让我们看一下扩展用于复制目录树的SimpleFileVisitor的类为清晰起见省略了一些详细信息 public class CopyDirVisitor extends SimpleFileVisitorPath {private Path fromPath;private Path toPath;private StandardCopyOption copyOption StandardCopyOption.REPLACE_EXISTING;....Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {Path targetPath toPath.resolve(fromPath.relativize(dir));if(!Files.exists(targetPath)){Files.createDirectory(targetPath);}return FileVisitResult.CONTINUE;}Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {Files.copy(file, toPath.resolve(fromPath.relativize(file)), copyOption);return FileVisitResult.CONTINUE;} } 在第9行中将遍历源文件“ fromPath”中的每个目录并在目标“ toPath”中创建每个目录。 在这里我们可以看到Path对象在处理目录和文件方面的强大功能。 随着代码深入目录结构只需分别在fromPath和toPath对象上调用relativize和resolve即可构造正确的Path对象。 我们根本不需要知道我们在目录树中的位置因此不需要繁琐的StringBuilder操作即可创建正确的路径。 在第17行我们看到用于将文件从源目录复制到目标目录的Files.copy方法。 接下来是删除整个目录树的简单示例。 删除目录树示例 在此示例中SimpleFileVisitor已被子类化用于删除目录结构 public class DeleteDirVisitor extends SimpleFileVisitorPath {Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {Files.delete(file);return FileVisitResult.CONTINUE;}Overridepublic FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {if(exc null){Files.delete(dir);return FileVisitResult.CONTINUE;}throw exc;} } 如您所见删除是一个非常简单的操作。 只需删除找到的每个文件然后在退出时删除目录即可。 将Files.walkFileTree与Google Guava结合 前两个示例虽然有用但非常“香草”。 让我们看一下另外两个示例它们结合了Google Gauva Function和Predicate接口它们更具创造力。 public class FunctionVisitor extends SimpleFileVisitorPath {FunctionPath,FileVisitResult pathFunction;public FunctionVisitor(FunctionPath, FileVisitResult pathFunction) {this.pathFunction pathFunction;}Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {return pathFunction.apply(file);} } 在这个非常简单的示例中我们将SimpleFileVisitor子类化以将Function对象作为构造函数参数并且在遍历目录结构时将该函数应用于每个文件。 public class CopyPredicateVisitor extends SimpleFileVisitorPath {private Path fromPath;private Path toPath;private PredicatePath copyPredicate;public CopyPredicateVisitor(Path fromPath, Path toPath, PredicatePath copyPredicate) {this.fromPath fromPath;this.toPath toPath;this.copyPredicate copyPredicate;}Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {if (copyPredicate.apply(dir)) {Path targetPath toPath.resolve(fromPath.relativize(dir));if (!Files.exists(targetPath)) {Files.createDirectory(targetPath);}return FileVisitResult.CONTINUE;}return FileVisitResult.SKIP_SUBTREE;}Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {Files.copy(file, toPath.resolve(fromPath.relativize(file)));return FileVisitResult.CONTINUE;} } 在此示例中CopyPredicateVisitor接收一个Predicate对象并且基于返回的布尔值不会复制部分目录结构。 我想指出的是前面两个示例除了有用性之外确实可以在本文后面的源代码中进行单元测试。 DirUtils 在到目前为止所介绍的所有内容的基础上我无法抗拒创建实用程序类DirUtils的机会 该类是使用以下提供以下方法的目录的抽象 //deletes all files but leaves the directory tree in placeDirUtils.clean(Path sourcePath);//completely removes a directory treeDirUtils.delete(Path sourcePath);//replicates a directory treeDirUtils.copy(Path sourcePath, Path targetPath);//not a true move but performs a copy then a delete of a directory treeDirUtils.move(Path sourcePath, Path targetPath);//apply the function to all files visitedDirUtils.apply(Path sourcePath,Path targetPath, Function function); 虽然我不愿意说它已经可以生产了但是写起来很有趣。 结论 这就包装了java.nio.file包提供的新的复制和移动功能。 我个人认为这非常有用并且可以减轻使用Java中文件的痛苦。 还有更多内容涉及符号链接流复制方法DirectoryStreams等因此请务必坚持。 谢谢你的时间。 一如既往地欢迎提出意见和建议。 参考 Java 7的新增功能 JCG合作伙伴的 文件和目录的复制和移动   比尔·贝杰克Bill Bejeck在“ 编码随机思想”博客上。 翻译自: https://www.javacodegeeks.com/2012/02/java-7-copy-and-move-files-and.html
http://www.yutouwan.com/news/480395/

相关文章:

  • 网站建设仟首先金手指13网站平台建设公司
  • 网站建设费用的会计wordpress修改主题注册
  • 网站版面设计说明邯郸网站建设品牌加盟
  • 做微页的网站东莞做网站首选
  • 上传网站模板建站垫江网站建设价格
  • 建设网站如何给页面命名青州住房和城乡建设网站
  • 成都网站建设开发公司培训课程网站
  • 湖北公司响应式网站建设推荐wordpress 导出 主题
  • 做网站导航cms网站不备案会有什么影响吗
  • 西部数码 成品网站青岛网站设计公司在哪找
  • html5响应时网站做微信小程序和做网站
  • 公司做网站怎么推广企业网站设计wordpress
  • 临沂做进销存网站网站网页制作公司网站
  • 广东建设企业网站怎么样有些网站下方只有版权没有ICP
  • 男同志做爰网站搭建网站的流程
  • 每天一篇好文章网站dw网页设计模板图片
  • 免费建站cms论文答辩ppt模板免费下载
  • 新泰市住房和城乡建设局网站网站建设中字样图片
  • asp网站建设课程设计wordpress免费托管
  • 企业网站建设ppt宁波网页
  • WordPress手机端底部悬浮窗seo优化关键词挖掘
  • 路由器 做网站电商推广绩效
  • 好看的电商网站模板建站最便宜的平台
  • 网站以下内容未做缓存wordpress附加字段
  • 网站域名的选择网站轮播图的按钮怎么做的
  • android 做电子书下载网站好看云在线网站模板
  • 网站毕业设计怎么做金诺网站建设
  • 网建什么意思南宁seo外包平台
  • 衡阳企业网站建设价格微信小程序商城官网
  • 购物网站模板html高端网站建设磐石网络好