iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JDK1.7中java.nio.file.Files如何读取文件
  • 639
分享到

JDK1.7中java.nio.file.Files如何读取文件

jdk1.7javanio 2023-05-30 19:05:02 639人浏览 安东尼
摘要

这篇文章给大家分享的是有关jdk1.7中java.NIO.file.Files如何读取文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JDK1.7中引入了新的文件操作类java.nio.file这个包,其中有个

这篇文章给大家分享的是有关jdk1.7中java.NIO.file.Files如何读取文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

JDK1.7中引入了新的文件操作类java.nio.file这个包,其中有个Files类它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件。开发者还可以使用Files.readAllBytes(Path)方法把整个文件读入内存,此方法返回一个字节数组,还可以把结果传递给String的构造器,以便创建字符串输出。此方法确保了当读入文件的所有字节内容时,无论是否出现IO异常或其它的未检查异常,资源都会关闭。这意味着在读文件到最后的块内容后,无需关闭文件。要注意,此方法不适合读取很大的文件,因为可能存在内存空间不足的问题。开发者还应该明确规定文件的字符编码,以避免任异常或解析错误。

readAllBytes(Path)方法的源码:

<span > </span><span ></span><span >   public static byte[] readAllBytes(Path path) throws ioException {     try (SeekableByteChannel sbc = Files.newByteChannel(path);        InputStream in = Channels.newInputStream(sbc)) {//JDK1.7 try-with-resource       long size = sbc.size();       if (size > (long)MAX_BUFFER_SIZE)         throw new OutOfMemoryError("Required array size too large");        return read(in, (int)size);     }   }</span>

读取文件只要一行

package entryNIO;  import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths;  public class BufferAndChannel {   public static void main(String[] args) {     try {         System.out.println(          new String(Files.readAllBytes(Paths.get("C:\\FileChannelImpl.java")))         );            } catch (IOException e) {       e.printStackTrace();     }   } }

readAllLines方法的源码

public static List<String> readAllLines(Path path, Charset cs) throws IOException {     try (BufferedReader reader = newBufferedReader(path, cs)) {       List<String> result = new ArrayList<>();       for (;;) {         String line = reader.readLine();         if (line == null)           break;         result.add(line);       }       return result;     }   }
package entryNIO;  import java.util.List; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths;  public class BufferAndChannel {   public static void main(String[] args) {     //如果是文本文件也可以这么读 调用readAllLines 方法     try {<span >               </span>//JDK1.8以后可以省略第二个参数,默认是UTF-8编码       List<String> lines = Files.readAllLines(Paths.get("C:\\FileChannelImpl.java"), StandardCharsets.UTF_8);       StringBuilder sb = new StringBuilder();       for (String line : lines) {         sb.append(line+"\n");// \r\n 换行符       }       String fromFile = sb.toString();       System.out.println(fromFile);      } catch (IOException e) {       e.printStackTrace();     }   } }

使用Java8 流的方式:

先看源码实现

public static Stream<String> lines(Path path) throws IOException {     return lines(path, StandardCharsets.UTF_8);   }
package entryNIO;  import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths;  public class BufferAndChannel {   public static void main(String[] args) {     //Java8 新增lines方法     try {        // Java8用流的方式读文件,更加高效        Files.lines(Paths.get(<span >"C:\\FileChannelImpl.java"</span>)).forEach(System.out::println);      } catch (IOException e) {       e.printStackTrace();     }   } }

读文件一行写文件也只需要一行

package entryNIO;  import java.util.Arrays; import java.util.List; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class BufferAndChannel {   public static void main(String[] args){     //Java8 新增lines方法     String filePath="C:\\FileChannelImpl.java";     try {        // Java8用流的方式读文件,更加高效                             List<String> stringStream=Files.readAllLines(Paths.get(filePath));       //因为Files.lines(Path path)返回的是Stream<String>,所以可以通过下面这种方法变成List<String>       //List<String> stringStream2=Arrays.asList((String[])Files.lines(Paths.get(filePath)).toArray());              //StandardOpenOption为枚举类 ,如果当前所Paths.get()的文件不存在,第三个参数可选择StandardOpenOption.CREATE_NEW       //文件存在则抛java.nio.file.FileAlreadyExistsException异常       Files.write(Paths.get("C:\\2.java"), stringStream, StandardOpenOption.CREATE_NEW);              } catch (IOException e) {       e.printStackTrace();     }   } }

感谢各位的阅读!关于“JDK1.7中java.nio.file.Files如何读取文件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: JDK1.7中java.nio.file.Files如何读取文件

本文链接: https://www.lsjlt.com/news/220902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL怎么更新字段长度
    要更新MySQL表中的字段长度,可以使用ALTER TABLE语句。以下是更新字段长度的示例: ALTER TABLE table_...
    99+
    2024-05-14
    mysql
  • sql如何修改表字段长度
    要修改表字段的长度,可以使用ALTER TABLE语句,然后使用MODIFY COLUMN来修改字段的长度。以下是一个示例: ALT...
    99+
    2024-05-14
    sql
  • mysql数据量太大如何解决
    有几种方法可以解决MySQL数据量过大的问题: 数据库分区:将数据库表按照某种规则进行分区,分成多个小表,可以提高查询速度和管理...
    99+
    2024-05-14
    mysql
  • MySQL单表数据量过大如何解决
    在MySQL中,当单表的数据量过大时,可以采取以下几种方法来解决问题: 使用索引:在表的字段上创建适当的索引,可以提高查询效率,...
    99+
    2024-05-14
    mysql
  • mysql导出数据量过大如何解决
    当导出的数据量过大时,可以尝试以下方法来解决问题: 使用数据库工具:使用数据库管理工具如Navicat或MySQL Workbe...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的作用是什么
    在MySQL中,log_bin是二进制日志文件的名称,用于记录所有对数据库进行更改的操作,如插入、更新、删除等。这些二进制日志文件可...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的特点有哪些
    log_bin是MySQL的二进制日志文件,用于记录所有对数据库的修改操作,包括插入、更新、删除等。 log_bin文件是M...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装的方法是什么
    要在Linux系统上安装MySQL RPM包,可以按照以下步骤操作: 下载MySQL的RPM包:你可以从MySQL官方网站下载适...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装后怎么使用
    安装MySQL RPM包后,您可以通过以下步骤来使用MySQL: 启动MySQL服务:使用以下命令来启动MySQL服务: sud...
    99+
    2024-05-14
    mysql
  • lxml中怎么处理XML命名空间默认值
    在lxml中处理XML命名空间的默认值可以通过使用xpath()方法和register_namespace()方法来实现。...
    99+
    2024-05-14
    lxml
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作