Java常见的I/O读写方法

目录

0、写在前面

本节为软件构造系列Chapter8中的I/O性能部分的补充。

1、I/O

Java的I/O操作比较多,具体可以查询Java文档,Chrome中使用Ctrl+F查询io或nio即可。
这里主要介绍四种比较基本I/O方式,每种读写大致可以分为两种,按行读取和按字节读取,整体来说,大同小异。在此实现最基本的操作。
对于下面涉及的文件地址及File对象,在下面定义:

/* in file */
String filePathIn = "file.txt";
File fileIn = new File(filePath);
/* out file */
String filePathOut = "Out.txt";
File fileOut = new File(filePathOut);
1.1、BufferedReader/Writer

使用缓存区的读写方式。

1.1.1、BufferedReader

这里把brCh的大小设置为file.length(),一次性把文件加载到缓存中,之后可以进行解析等操作;也可以设置为特定的值(eg. 1024)等,分次加载。

      /* new FileReader(fileIn)读写器 */
      BufferedReader brIn = new BufferedReader(new FileReader(fileIn));
      /* 文件大小 */
      char[] brCh = new char[(int) fileIn.length()];
      /* 读取进入brCh */
      brIn.read(brCh);
      brIn.close();
1.1.2、BufferedWriter
      BufferedWriter bwOut = new BufferedWriter(new FileWriter(fileOut));
      /* 将之前读取的brCh数组写入内存 */
      bwOut.write(brCh);
      bwOut.close();
1.2、nio Files

新IO操作,有很多改进,效率较高,操作较简单。

1.2.1、read
      /* 按字节读取 */
      byte[] nioBy = Files.readAllBytes(Paths.get(filePathIn));
      /* 一次性读取所有行,可以使用for-each遍历 */
      //String[] lines = Files.readAllLines(Paths.get(filePathIn));
1.2.2、write
      /* 将之前读取的nioBy字节数组写入内存 */
      Files.write(Paths.get(filePathOut), nioBy);
1.3、Scanner/PrintWriter
1.3.1、Scanner
      /* 创建Scanner读取 */
      Scanner scIn = new Scanner(fileIn);
      /* 使用StringBuffer保存,避免生成太多临时变量 */
      StringBuffer scStr = new StringBuffer();
      String scLine;
      /* 按行读取 */
      while (scIn.hasNextLine()) {
        scLine = scIn.nextLine();
        scStr.append(scLine + "\n");
      }
      scIn.close();
1.3.2、PrintWriter
      /* 写入器 */
      PrintWriter pwOut = new PrintWriter(fileOut);
      /* 将之前读取保存的StringBuffer转为String类型,然后写入文件 */
      pwOut.write(scStr.toString());
      pwOut.close();
1.4、Stream

使用文件流操作。

1.4.1、InputStream
      InputStream disIn = new FileInputStream(fileIn);
      /* 保存的字节数组 */
      byte dosB[] = new byte[(int) fileIn.length()];
      /* 一次加载进缓存 */
      disIn.read(dosB);
      disIn.close();
1.4.2、OutputStream
      OutputStream dosOut = new FileOutputStream(fileOut);
      /* 将读取的字节数组写入文件 */
      dosOut.write(dosB);
      dosOut.close();
2、性能对比

这里写图片描述

参考:
javadoc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【完整课程列表】 资源汇总下载地址:https://download.csdn.net/download/qq_27595745/55418618 Java SE编程入门教程 collection与collections(共7页).pptx Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程入门教程 java this和super(共10页).pptx Java SE编程入门教程 java 常用API(共22页).pptx Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx Java SE编程入门教程 java包装器(共9页).pptx Java SE编程入门教程 java反射机制(共16页).pptx Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门教程 java类和对象方法以及包的使用(共56页).pptx Java SE编程入门教程 java类和对象方法以及包的使用(共62页).pptx Java SE编程入门教程 java判断循环(共79页).ppt Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx Java SE编程入门教程 java线程(共61页).pptx Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值