iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Java几种文件读取方式耗时
  • 247
分享到

浅谈Java几种文件读取方式耗时

Java文件读取Java文件读取耗时 2023-05-15 17:05:11 247人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录BufferedReaderFiles.readAllBytesFiles.linesCommoNIO::readFileToString项目中经常会遇到文件读写,不同的读写方式

项目中经常会遇到文件读写,不同的读写方式速度之间有多大差异呢?

这里自己没有使用外部的依赖库,使用Java原生的文件读写方法:

测试文件大小,7.1M

BufferedReader

代码:

    public static String ReadFileByBufferReaderToString(String path) {
        if (TextUtils.isEmpty(path)) {
            return "";
        }
        StringBuilder stringBuilder = new StringBuilder();
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) {
            String tempStr;
            while ((tempStr = bufferedReader.readLine()) != null) {
                stringBuilder.append(tempStr).append(System.lineSeparator());
            }
        } catch (ioException e) {
            e.printStackTrace();
        }
        return stringBuilder.toString();
    }

这里我们使用stringbuilder去存储读取出来的字符串,加日志查看耗时,读取一个

onClick: readFileByBufferReaderStringBuilder tims use is 86

这里将文件读取出来之后存储方式改下,每次创建新的String字符串,测试一下每次创建新的字符串和使用StringBuilder之间的性能差异:

    public static String ReadFileByBufferReaderToStringUseString(String path) {
        if (TextUtils.isEmpty(path)) {
            return "";
        }
        String result = "";
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) {
            String tempStr;
            while ((tempStr = bufferedReader.readLine()) != null) {
                result += tempStr;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.i(TAG, "ReadFileToString: read success ");
        return result;
    }

 2023-04-08 23:06:06.141 18416-18518/com.example.Androidstart I/TestFileReadSpeed: onClick: readFileByBufferReaderString tims use is 264041

花了264041 ms,可见多次创建String对象对性能消耗非常大,所以字符串拼接的时候一定要使用StringBuilder,不能使用String直接相加

Files.readAllBytes

    @Requiresapi(api = Build.VERSION_CODES.O)
    public static String ReadFileByReadAllBytesReaderToString(String path) {
        if (TextUtils.isEmpty(path)) {
            return "";
        }
        String result = null;
        try {
            result = new String(Files.readAllBytes(Paths.get(path)));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

2023-04-09 17:38:06.989 7078-7359/com.example.androidstart I/TestFileReadSpeed: onClick: ReadFileByReadAllBytesReaderToString tims use is 68

耗时68ms,比上面的BufferReader行一行读取会快一些,但是这个API有一些限制就是必须在AndroidO及以上版本才可以使用。

Files.lines

    @RequiresApi(api = Build.VERSION_CODES.O)
    public static String ReadFileByByFilesReadLinesToString(String path) {
        if(TextUtils.isEmpty(path)){
            return "";
        }
        StringBuilder stringBuilder = new StringBuilder();
        try (Stream<String> stream = Files.lines(Paths.get(path))) {
            stream.forEach(new Consumer<String>() {
                @Override
                public void accept(String s) {
                    stringBuilder.append(s);
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuilder.toString();
    }

2023-04-09 17:46:14.342 7078-7078/com.example.androidstart I/TestFileReadSpeed: onClick: ReadFileByByFilesReadLinesToString tims use is 102

Files.lines耗时中等在100ms左右。

CommonIO::readFileToString

代码:

   public static String ReadFileByCommonIOReadFileToString(String path) {
        if (TextUtils.isEmpty(path)) {
            return "";
        }
        try {
            return FileUtils.readFileToString(new File(path), Charset.defaultCharset());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

2023-04-09 17:53:34.204 8292-8292/com.example.androidstart I/TestFileReadSpeed: onClick: ReadFileByCommonIOReadFileToString tims use is 70

耗时为70ms

综上:(Files.readAllBytes 和 FileUtils.readFileToString耗时想近) 优于 (BufferReader和Files.lines耗时相近)

到此这篇关于浅谈Java几种文件读取方式耗时的文章就介绍到这了,更多相关Java 文件读取内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Java几种文件读取方式耗时

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

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

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

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

下载Word文档
猜你喜欢
  • 浅谈Java几种文件读取方式耗时
    目录BufferedReaderFiles.readAllBytesFiles.linesCommonIO::readFileToString项目中经常会遇到文件读写,不同的读写方式...
    99+
    2023-05-15
    Java 文件读取 Java 文件读取耗时
  • java 读取文件的几种方式
    在 Java 中有几种常用的方式来读取文件: 使用 FileInputStream 类以字节的方式读取文件。 使用 BufferedReader 在字符输入流上包装一个缓冲区,以行为单位读取文件。 使用 Scanner 类以分隔符为标志...
    99+
    2023-09-02
    java servlet 开发语言
  • Java读取文件的几种方式
    1. 使用流读取文件 public static void stream() { String fileName = "D:\\test.txt"; final String CHARSET_NAME = "UTF-8"; ...
    99+
    2023-09-09
    java 开发语言 servlet 前端
  • SpringBoot读取yml文件有哪几种方式
    这篇文章主要介绍了SpringBoot读取yml文件有哪几种方式,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Spring Boot读取yml文件的主要方式有以下几种:1.@Value注解我们可以在bean的属性上使用@...
    99+
    2023-07-06
  • 【SpringBoot系列】读取yml文件的几种方式
    Spring Boot读取yml文件的主要方式有以下几种: 1.@Value注解 ​ 我们可以在bean的属性上使用@Value注解,直接读取yml中的值,如: application.yml: name: Zhangsan Bean: p...
    99+
    2023-08-18
    spring boot java spring
  • 浅谈vue中文件下载的几种方式及方法封装
    一、通过对后端发送post请求,使用blob下载文件 function downBlob(res, fileName = "导出报表", format = "xlsx") {   ...
    99+
    2023-01-13
    vue 文件下载
  • 浅谈几种Java自定义异常处理方式
    目录自定义异常类错误编码处理断言处理应用日志处理异常消息模板和格式化处理总结在Java中,异常是一种常见的处理机制。当程序运行出现错误时,Java会默认抛出一个异常,并通过栈回溯信息...
    99+
    2023-05-19
    Java自定义异常 Java 异常
  • java— 读取JSON文件的多种方式
    大部分内容参考自: https://blog.csdn.net/csdn_halon/article/details/120287992 在开发过程中有时会遇到需要读取本地.json文件的需求,通常会自己写Reader代码去读,但是...
    99+
    2023-09-01
    java json Powered by 金山文档
  • java 读取json文件的2种方式
    1 背景介绍 研发过程中,经常会涉及到读取配置文件等重复步骤,也行是.conf文件,也许是.json文件,但不管如何他们最终都需要进入到jave的inputStream里面。下面以读取.json文件为例 2 FileInputStream读...
    99+
    2023-08-18
    java json linux
  • Python读取CSV文件的几种方法
    话不多说,开干!!! 目录 1. 使用 csv 模块 2.使用 numpy 库 3.使用pandas库 4.使用标准库中的 csv 模块 5.注意事项 1. 使用 csv 模块 (1)项目目录如下图所示: (2)代码如下: impor...
    99+
    2023-08-31
    python 开发语言 pandas numpy
  • 浅谈react路由传参的几种方式
    第一种传参方式,动态路由传参 通过设置link的path属性,进行路由的传参,当点击link标签的时候,会在上方的url地址中显示传递的整个url <Link to='/...
    99+
    2024-04-02
  • 浅谈go中cgo的几种使用方式
    目录最简单的CGO程序源码方式调用C函数内部机制编译和链接参数编译参数:CFLAGS/CPPFLAGS/CXXFLAGS链接参数:LDFLAGS通过静态库的方式调用C函数通过动态库的...
    99+
    2024-04-02
  • 浅谈JavaScript的几种继承实现方式
    目录当前需求: 实现 Student 继承自 Person构造函数Person构造函数Student希望满足的条件功能利用原形链实现方法的继承方式1: 子类原型指向父类原型方式2 子...
    99+
    2023-05-17
    JavaScrip 继承
  • 浅谈一种Laravel路由文件划分方式
    最初,我想到了利用路由组方法可以接收文件,这就是 laravel 在 RouteServiceProvider 处拆分路由的方式。 <?php namespace ...
    99+
    2024-04-02
  • Java读取Properties配置文件的6种方式
    Java读取Properties的方式 项目结构:经典的maven项目结构 配置文件1和2内容一致: jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=mysql://localhost:3306/...
    99+
    2023-08-16
    java
  • 浅谈Springboot2.0防止XSS攻击的几种方式
    目录防止XSS攻击,一般有两种做法:转义 做法的三种实现:转义方法一:注册自定义转换器转义方法二:BaseController转义方法三:Converter在平时做项目代码开发的时候...
    99+
    2022-11-13
    Springboot防止XSS攻击 Springboot防止XSS
  • Excel文件读取的两种方式
    1、Pandas库的读取操作 from pandas import read_excel dr=read_excel(filename,header) dr#dataframe数据 dw=DataFrams(data=dict,colum...
    99+
    2023-01-31
    两种 方式 文件
  • Python读取文件的多种方式
    在Python编程中,读取文件是非常常见的操作。Python提供了多种读取文件的方式,本文将介绍其中的几种方式。 1. 使用open函数读取文件 使用Python内置函数open()可以打开一个文件,并返回一个文件对象。在文件对象上可以调用...
    99+
    2023-09-02
    python pandas 数据分析
  • Node.js读取文件的三种方式
    本篇内容介绍了“Node.js读取文件的三种方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!学习 Nod...
    99+
    2024-04-02
  • 浅谈前端JS沙箱实现的几种方式
    目录前言 iframe实现沙箱 diff方式实现沙箱 基于代理(Proxy)实现单实例沙箱 基于代理(Proxy)实现多实例沙箱 结束语 参考前言 在微前端领域当中,沙箱是很重要的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作