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

设计网站有没有版权新手初做网站

设计网站有没有版权,新手初做网站,网站建设销售好做嘛,辽宁省建设厅网站中级职称公示在先前的文章中#xff0c;我讨论了文件和目录的创建#xff08; 创建文件和目录 #xff09;以及选择#xff08; 列出和过滤目录内容 #xff09;。 采取的最后一个合乎逻辑的步骤是探索我们如何使用它们以及如何使用它们。 这是库的一部分#xff0c;它经过了重新设计… 在先前的文章中我讨论了文件和目录的创建 创建文件和目录 以及选择 列出和过滤目录内容 。 采取的最后一个合乎逻辑的步骤是探索我们如何使用它们以及如何使用它们。 这是库的一部分它经过了重新设计。 这方面的更新包括保证某些操作的原子性API改进性能优化以及引入适当的异常层次结构这些层次结构取代了IO库以前版本中的boolean返回方法。 开启档案 在开始阅读和写入文件之前我们需要介绍这些操作的一个共同基础-文件的打开方式。 文件的打开方式直接影响这些操作的结果及其性能。 让我们看一下打开枚举java.nio.file.StandardOpenOption包含的文件的标准选项 标准打开选项 值 描述 APPEND 如果打开该文件以进行WRITE访问则字节将被写入文件的末尾而不是开头。 CREATE 如果不存在请创建一个新文件。 CREATE_NEW 创建一个新文件如果文件已经存在则失败。 DELETE_ON_CLOSE 关闭删除。 DSYNC 要求对文件内容的每次更新都同步写入基础存储设备。 READ 打开以进行读取访问。 SPARSE 稀疏文件。 SYNC 要求对文件内容或元数据的每次更新都同步写入基础存储设备。 TRUNCATE_EXISTING 如果该文件已经存在并且已打开以进行WRITE访问则其长度将被截断为0。 WRITE 打开以进行写访问。 这些都是开发人员您可能需要正确处理文件打开无论是读取还是写入的所有标准选项。 读取文件 在读取文件时NIO.2提供了几种方法来实现–每种方法都有其优缺点。 这些方法如下 将文件读入字节数组 使用无缓冲流 使用缓冲流 让我们来看看第一个选项。 类Files提供了方法readAllBytes来做到这一点。 将文件读入字节数组似乎很简单但这可能仅适用于非常有限的文件范围。 由于我们将整个文件放入内存中因此必须注意该文件的大小。 仅当我们尝试读取小文件时使用此方法才是合理的并且可以立即完成。 如以下代码段所示这是非常简单的操作 Path filePath Paths.get(C:, a.txt);if (Files.exists(filePath)) {try {byte[] bytes Files.readAllBytes(filePath);String text new String(bytes, StandardCharsets.UTF_8);System.out.println(text);} catch (IOException e) {throw new RuntimeException(e);} } 上面的代码首先将文件读取到字节数组中然后使用以下输出构造包含该文件内容的字符串对象 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sit amet justo nec leo euismod porttitor. Vestibulum id sagittis nulla, eu posuere sem. Cras commodo, massa sed semper elementum, ligula orci malesuada tortor, sed iaculis ligula ligula et ipsum. 当我们需要以字符串形式读取文件的内容时可以使用上面的代码。 但是这种解决方案不是很干净我们可以使用类Files readAllLines来避免这种尴尬的构造。 当需要逐行读取人类可读的输出时此方法可作为读取文件的便捷解决方案。 此方法的使用再次非常简单并且与前面的示例非常相似有相同的限制 Path filePath Paths.get(C:, b.txt);if (Files.exists(filePath)) {try {ListString lines Files.readAllLines(filePath, StandardCharsets.UTF_8);for (String line : lines) {System.out.println(line);}} catch (IOException e) {throw new RuntimeException(e);} } 具有以下输出 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sit amet justo nec leo euismod porttitor. Vestibulum id sagittis nulla, eu posuere sem. Cras commodo, massa sed semper elementum, ligula orci malesuada tortor, sed iaculis ligula ligula et ipsum.使用流读取文件 继续使用更复杂的方法我们总是可以使用良好的旧流就像我们以前使用该库的以前版本一样。 既然这是众所周知的基础我将仅展示如何获取这些流的实例。 首先我们可以通过调用newInputStream方法从类Files检索InputStream实例。 像往常一样可以进一步使用装饰器模式并从中输出缓冲流。 为了方便起见使用方法newBufferedReader 。 这两个方法都返回一个流实例该实例是普通的旧java.io对象。 Path filePath1 Paths.get(C:, a.txt); Path filePath2 Paths.get(C:, b.txt);InputStream is Files.newInputStream(filePath1); InputStreamReader isr new InputStreamReader(is); BufferedReader br new BufferedReader(isr);BufferedReader reader Files.newBufferedReader(filePath2, StandardCharsets.UTF_8);写入文件 写入文件与NIO.2库提供的一系列工具中的读取过程相似因此只需回顾一下 将字节数组写入文件 使用无缓冲流 使用缓冲流 再次让我们首先探索字节数组选项。 毫不奇怪类Files支持我们方法write两个变体。 我们正在从数组或文本行中写入字节我们在这里需要关注StandardOpenOptions 因为这两种方法都可能受到这些修饰符的自定义选择的影响。 默认情况下如果没有将StandardOpenOption传递给该方法则write方法的行为就像存在CREATE TRUNCATE_EXISTING和WRITE选项一样如Javadoc中所述。 话虽如此请注意不要使用默认无打开选项版本的write方法因为它要么创建一个新文件要么最初将现有文件截断为零大小。 写入完成后文件会自动关闭-成功写入后会引发异常。 对于文件大小适用与readAllBytes相同的限制。 下面的示例演示如何将字节数组写入文件。 请注意由于write方法的默认行为因此没有任何检查方法。 该示例可以多次运行并具有两个不同的结果。 第一次运行将创建一个文件将其打开以进行写入然后将数组bytes写入此文件。 此代码的任何后续调用都将擦除该文件并将bytes数组的内容写入此空文件。 两次运行都将导致文本为“ Hello world”的封闭文件。 写在第一行。 Path newFilePath Paths.get(/home/jstas/a.txt); byte[] bytes new byte[] {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21};try {Files.write(newFilePath, bytes); } catch(IOException e) {throw new RuntimeException(e); } 当我们需要写行而不是字节时我们可以将字符串转换为字节数组但是还有一种更方便的方法。 只需准备一行列表然后将其传递给write方法即可。 请注意以下示例中两个StandardOpenOption的使用。 通过使用这些选项我可以确保存在一个文件如果不存在则会创建该文件以及将数据追加到该文件的方式因此不会丢失任何先前写入的数据。 整个例子很简单看一下 Path filePath Paths.get(/home/jstas/b.txt);ListString lines new ArrayList(); lines.add(Lorem ipsum dolor sit amet, consectetur adipiscing elit.); lines.add(Aliquam sit amet justo nec leo euismod porttitor.); lines.add(Vestibulum id sagittis nulla, eu posuere sem.); lines.add(Cras commodo, massa sed semper elementum, ligula orci malesuada tortor, sed iaculis ligula ligula et ipsum.);try {Files.write(filePath, lines, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND); } catch (IOException e) {throw new RuntimeException(e); }使用流写入文件 对于较大的文件使用字节数组可能不是一个好主意。 这是流进入的时间。类似于阅读本章我将不解释流或如何使用它们。 我宁愿专注于一种检索其实例的方法。 类Files提供了newOutputStream方法该方法接受StandardOpenOption来自定义流行为。 默认情况下当没有将StandardOpenOption传递给该方法时流write方法的行为就像存在CREATE TRUNCATE_EXISTING和WRITE选项一样如Javadoc中所述。 该流没有被缓冲但是通过一点装饰器魔术您可以创建BufferedWriter实例。 为了解决这种不便NIO.2附带了newBufferWriter方法该方法可立即创建缓冲的流实例。 以下代码段显示了两种方式 Path filePath1 Paths.get(/home/jstas/c.txt); Path filePath2 Paths.get(/home/jstas/d.txt);OutputStream os Files.newOutputStream(filePath1); OutputStreamWriter osw new OutputStreamWriter(os); BufferedWriter bw new BufferedWriter(osw);BufferedWriter writer Files.newBufferedWriter(filePath2, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);复制和移动文件和目录 复制文件和目录 NIO.2最受欢迎的功能之一是处理复制和移动文件和目录的更新方式。 为了使所有内容保持一致设计人员决定在新文件系统API中引入两个父标记接口 OpenOption和CopyOption 这两个接口均来自包java.nio.file 。 上一章提到的StandardOpenOption枚举实现了OpenOption接口。 CopyOption接口具有两个实现其中一个已经在关于NIO.2中的Links的帖子中见过。 你们中有些人可能还记得LinkOption枚举它被称为实现指导方法来处理链接相关的操作。 但是还有另一种实现–包java.nio.file StandardCopyOption枚举。 再次我们将看到另一个枚举–用于指导复制操作。 因此在深入研究任何代码之前让我们回顾一下使用不同的复制选项可以实现的目标。 标准复印选项 值 描述 ATOMIC_MOVE 将文件作为原子文件系统操作移动。 COPY_ATTRIBUTES 将属性复制到新文件。 REPLACE_EXISTING 替换现有文件如果存在。 使用这些选项来指导您的IO操作非常简单也很简单。 由于我们正在尝试复制文件因此ATOMIC_MOVE使用意义不大您仍然可以使用它但最终会出现java.lang.UnsupportedOperationException: Unsupported copy option 。 类Files提供了三种copy方法可用于不同目的 copy(InputStream in, Path target, CopyOption... options) 将所有字节从输入流复制到文件。 copy(Path source, OutputStream out) 将所有字节从文件复制到输出流。 copy(Path source, Path target, CopyOption... options) 将文件复制到目标文件。 在我们获得任何代码之前我相信最好了解copy方法的最重要的行为功能上述三个方法中的最后一个。 copy方法的行为如下基于Javadoc 默认情况下如果目标文件已经存在或为符号链接则复制失败。 如果源和目标是同一文件则该方法将完成而无需复制该文件。 有关更多信息请查看类Files方法isSameFile 不需要将文件属性复制到目标文件。 如果源文件是目录则它将在目标位置创建一个空目录不复制目录中的条目。 复制文件不是原子操作。 自定义实现可能会带来新的特定选项。 这些是copy方法内部工作的核心原理。 现在是查看代码示例的好时机。 由于此方法非常易于使用因此可以将其实际使用使用最常见的copy方法形式。 如预期的那样以下代码将复制源文件并可能覆盖目标文件并保留文件属性 Path source Paths.get(/home/jstas/a.txt); Path target Paths.get(/home/jstas/A/a.txt);try {Files.copy(source, target, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING); } catch (IOException e) {throw new RuntimeException(e); } 这里没有什么大的惊喜–代码复制带有文件属性的源文件。 如果您觉得我忘记了不是空的目录请让我向我保证。 也可以使用NIO.2复制移动或删除填充的目录但这是我将在下一篇文章中介绍的内容因此您将不得不等待几天。 移动文件和目录 在移动文件时我们再次需要能够指定选项以指导方法从Files类move的过程。 在这里我们利用了上一章中提到的StandardCopyOptions 。 两个相关选项是ATOMIC_MOVE和REPLACE_EXISTING 。 首先让我们从一些基本特征入手然后继续进行代码示例 默认情况下如果目标文件已存在则move方法将失败。 如果源文件和目标文件是同一文件则该方法将完成而不移动文件。 有关更多信息请查看类Files方法isSameFile 如果源是符号链接则链接本身将被移动。 如果源文件是目录则必须为空才能移动。 不需要移动文件属性。 可以将移动文件配置为原子操作但不必这样做。 自定义实现可能会带来新的特定选项。 代码非常简单因此让我们看下面的代码片段 Path source Paths.get(/home/jstas/b.txt); Path target Paths.get(/home/jstas/A/b.txt);try {Files.move(source, target, StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING); } catch(IOException e) {throw new RuntimeException(e); } 如预期的那样代码以原子操作移动源文件。 删除文件和目录 本文的最后一部分致力于删除文件和目录。 再次删除文件非常简单可以使用两种可能的方法来调用通常都从Files类 public static void delete(Path path) public static boolean deleteIfExists(Path path) 两种方法使用相同的规则 默认情况下当文件是目录并且不为空时删除方法将失败并出现DirectoryNotEmptyException 。 如果文件是符号链接则链接本身将被删除。 删除文件可能不是原子操作。 如果文件已打开或被JVM或其他软件使用则可能不会删除文件。 自定义实现可能会带来新的特定选项。 Path newFile Paths.get(/home/jstas/c.txt); Path nonExistingFile Paths.get(/home/jstas/d.txt);try {Files.createFile(newFile);Files.delete(newFile);System.out.println(Any file deleted: Files.deleteIfExists(nonExistingFile)); } catch(IOException e) {throw new RuntimeException(e); } 输出 Any file deleted: false翻译自: https://www.javacodegeeks.com/2014/06/working-with-files-and-directories-in-nio-2.html
http://www.zqtcl.cn/news/711110/

相关文章:

  • wordpress建站安全吗wordpress企业主题教程
  • 网站构建的开发费用信息管理系统网站开发教程
  • 自己做网站怎么维护wordpress素材模板
  • 如何选择一个好的优质网站建设公司wordpress 主题小工具
  • mysql数据库做网站广州网站seo地址
  • 福建省住房和城乡建设厅网站电话网站开发项目步骤
  • 网站注册域名多少钱淘宝网商城
  • 做架构图的网站网站和网店的区别
  • 做红包网站简单个人网站设计
  • 新手学做网站pdf手wordpress修改搜索框
  • 做湲兔费网站视颍如何通过查询网站注册时间
  • 重庆cms建站模板南通网站建设推广优化
  • 合肥网站建设的公司新闻类网站如何做量化统计
  • 好用的在线地图网站十六局集团门户网
  • 网站开发数据库连接失败广州网站建站平台
  • 鄂尔多斯北京网站建设加盟网站建设的内容
  • 网站 被 抄袭不属于营销型网站的特点
  • 浙江英文网站建设互联网公司排名2021完整版
  • 完美代码的网站python开发工具
  • 餐饮网站开发参考文献网站建设500错误代码
  • 网站开发关键技术网站自动推广软件免费
  • 前端学习网站南阳东莞网站建设公司哪家好
  • 关于做网站的了解点wordpress小程序插曲
  • PHP网站开发与管理设计心得个人可以做聊天网站备案吗
  • 开公司可以在哪些网站做推广上海画册设计
  • 成都高新区规划建设局网站网络营销方式有哪些?举例说明
  • 国家企业信用公信系统入口seo服务
  • 个人网站网页模板室内装修设计自学软件
  • 什么网站可以做告白的网页网站模板套用湖南岚鸿
  • 膜结构网站推广怎么做怎样把网站上传到空间