java读取写入文件几种方式效率比较

Java读取和写入Excel表格 Java读取excel表格并将数据存入数据库1. 绪论2. 程序范例2.1 JXL 创建Excel文件 1. 绪论 POI Apache POI是Apache软件基金会的开放源码函数库,POI提供API给Java程序对Microsoft Office格式档案读写功能。 HSSF 读写Microsoft Excel格式档案的功能。 XSSF 读写Microsoft Excel OOXML格式档案... 阅读详情
public class ReadTxtJson {

public static String readTxtFile(String FileName) throws Exception {
BufferedInputStream bufferedInputStream = null;
ByteArrayOutputStream memStream = null;
byte[] data = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream(FileName));
   memStream = new ByteArrayOutputStream();
       byte[] buffer = new byte[1024];
       int len = 0;
       while ((len = bufferedInputStream.read(buffer)) != -1){
           memStream.write(buffer, 0, len);
       }
       data = memStream.toByteArray();        
} catch (Exception e) {
e.printStackTrace();
}finally{
try {  
          if(memStream != null){
memStream.close();
}
if(bufferedInputStream != null){
bufferedInputStream.close();
}
           } catch (IOException e) {  
               e.getStackTrace();  
           }  
}

String s = new String(data);
if(s != null){
bufferedWriter(s,"D:\\FtpFile\\test1.txt");
        }
        return new String(data);
    }


/** 
     * 以行为单位读写文件内容 
     *  
     * @param filePath 
     */  
    public static String readTxtFileJson(String filePath) throws Exception{
        File file = new File(filePath);  
        InputStreamReader read = null;
        StringBuffer sb = null;
        try {  
        //判断文件是否存在
        if(file.isFile() && file.exists()){ 
                read = new InputStreamReader(new FileInputStream(file),"utf-8");
                BufferedReader bufferedReader = new BufferedReader(read);
                sb = new StringBuffer();
                String lineTxt = null;
                while((lineTxt = bufferedReader.readLine()) != null){
                    sb.append(lineTxt);
                }
   }else{
       System.out.println("找不到指定的文件");
   }
        } catch (Exception e) {  
            e.getStackTrace();  
        } finally {  
            if (read != null) {  
                try {  
                read.close();
                } catch (IOException e) {  
                    e.getStackTrace();  
                }  
            }  
        }  
        
        if(sb != null){
        bufferedWriter(sb.toString(),"D:\\FtpFile\\test2.txt");
        }
        return sb != null ? sb.toString() : null; // GsonUtil.transJsonStrToObject(sb.toString(), KubeData.class)
    }  

    /**
     * 缓冲字符写入文件,写字符串,数组或字符数据
     * @param content
     * @throws Exception
     */
    public static void bufferedWriter(String content,String filePath) throws Exception{
    FileWriter fw = null;
    BufferedWriter bw = null;
    try {
  fw = new FileWriter(new File(filePath).getAbsoluteFile());
  bw = new BufferedWriter(fw);
  bw.write(content);
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
if(bw != null){
bw.close(); 
}
} catch (IOException e) {
e.printStackTrace();
}
}
    }
    
    /**
     * 文件输出流,必须将数据转换为字节,并保存到文件
     * @param content
     * @throws Exception
     */
    public static void fileOutputStream(String content,String filePath) throws Exception{
    FileOutputStream fop = null;
    try {
      fop = new FileOutputStream(new File(filePath));
  byte[] contentInBytes = content.getBytes();
  fop.write(contentInBytes);
  fop.flush();
} catch (Exception e) {
e.printStackTrace();
} finally{
  try {
   if (fop != null) {
    fop.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
}
    }
    
    /**
     * 测试1:
     * 文件大小:2m
     * 读取:readTxtFileJson 行读,写入:bufferedWriter 缓冲字符写入
     * 用时:51秒
     * 
     * 读取:readTxtFile 缓冲读取,写入:bufferedWriter 缓冲字符写入
     * 用时:31秒
     * 
     * 测试2:
     * 文件大小:10m
     * 读取:readTxtFileJson 行读,写入:fileOutputStream 文件输出流写入
     * 用时:501秒
     * 
     * 读取:readTxtFile 缓冲读取,写入:fileOutputStream 文件输出流写入
     * 用时:172秒
     * 
     * 文件大小:10m
     * 读取:readTxtFileJson 行读,写入:bufferedWriter 缓冲字符写入
     * 用时:293秒
     * 
     * 读取:readTxtFile 缓冲读取,写入:bufferedWriter 缓冲字符写入
     * 用时:132秒
     * 
     * 总结:
     * 不按格式读取效率高写入文件后大小比源文件小:readTxtFile 缓冲读取,bufferedWriter 缓冲字符写入
     * 按格式读取效率偏低(是第一种方式的一倍左右)写入文件后大小比源文件大小相当:readTxtFileJson 行读 ,bufferedWriter 缓冲字符写入
     * @param args
     */
public static void main(String[] args) {
try {
long date1 = System.currentTimeMillis();
String s = readTxtFileJson("D://FtpFile//get_services.txt");
//System.out.println(s);
System.out.println(System.currentTimeMillis()-date1);

// if(Util.isNotNull(kubeData)){
// System.out.println(kubeData.getKind()+"=="+kubeData.getApiVersion());
// }

long date2 = System.currentTimeMillis();
String s1 = readTxtFile("D://FtpFile//get_services.txt");
//System.out.println(s1);
System.out.println(System.currentTimeMillis()-date2);
} catch (Exception e) {
e.printStackTrace();
}
}
java中BufferedInputStream缓存为什么使IO效率高? 背景     最近在看socket编程,这里面需要用到stream进行数据的读取和写入。于是代码中用到了BufferedInputStream提高读的效率。所以就一直在想为什么加上buffer就能提高效率了,加上之前面试的时候曾有面试官问到过这个问题,当时没有回答上来,并且就上网搜索了一下,发现有个文章是为什么缓存能提高io效率,这个文章中说是因为缓存可以让DMA来处理io流,后面我一直都是这么认为的,今天在网上搜索发现即使你用的是inputstream来读也会用到D 阅读详情

相关推荐

Java基础文件处理:从读取到写入,轻松掌握!

🏆本文收录于「编程与技术实战」专栏,此专栏涵盖了C/C++编程、人工智能、数据结构、机器学习等技术领域的内容,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1375

java文件流_java高效文件流读写操作详解

导语防止自己以后忘记,记录一些文件流的性能对比。平常经常会操作到文件读写,java当中提供了许多操作文件的类,一般来说,文件操作也叫流操作,可以按照以下方式分类:按照功能分类,字节流和字符流。按照节点流和过滤流,节点流直接操作文件,过滤流包装了节点流和过滤流。如FileInputStream和BufferedFileInputStream就是分别是节点流和过滤流。文件流比较下面重点比较我们经常用的...

weixin_42526166的博客 983

【码歌】JAVA8快速写入和读取文件

话不多说,先看题 随机生成 Salary {name, baseSalary, bonus }的记录,如“wxxx,10,1”,每行一条记录,总共1000万记录,写入文本文件(UFT-8编码), 然后读取文件,name的前两个字符相同的,其年薪累加,比如wx,100万,3个人,最后做排序和分组,输出年薪总额最高的10组: wx 200万 10人 lt 180万 8人 ...

码歌大大 9008

java中最有效率的读写方法,java中有效率的读写文件操作(字节流)

package IO;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;/** 文件复制过程* 1.先读写文件* 2.再向...

weixin_42314420的博客 460

Java中多种写文件方式的效率对比实验(图)

一、实验背景   近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出、字符流输出、内存文件映射输出。前两种又可以分为带buffer及不带buffer。   二、实验目标   通过实验找出单线程场景下文件写入效率高的方式,并量化各种文件写入方式在效率上的差距。   三、实验设计   为减少其他环节的影响,示例代码使用循环输出同一字符串多次的方式测试整个输出环节的耗时,通过耗时、服务器资源使用情况(cpu、内存使用)等指标评判各种文件写入方式的效率好坏。   四、实验环境   OS: windows

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

一直都是报 【ECharts Unknown series wordCloud】这玩意可能要刷脸,祝你好运吧~

Sky_Bug的博客 2418

8.0、Java_IO流 - 如何利用缓冲区提高读写效率 ?

FileInputStream 通过字节的方式读取文件,适合读取所有类型的文件(图像、视频、文本文件等);Java 也提供了 FileReader 字符流 专门读取文本文件; FileOutputStream 通过字节的方式写数据到文件中,适合所有类型的文件;Java 也提供了 FileWriter 字符流 专门写入文本文件;

m0_52433668的博客 696

告别低效!用ADS仿真带你一步步搭建一个两路对称Doherty功放(含设计要点)

本文详细介绍了如何使用ADS仿真工具一步步搭建两路对称Doherty功放,涵盖设计要点与优化技巧。通过解析负载调制机制、阻抗变换等核心原理,结合5G基站等应用场景,帮助工程师提升功放效率与线性度。特别针对GaN管件的Doherty功放,在3.5GHz频段实现高效性能。

weixin_31783001的博客 396

JAVA实现对CSV文件的读取、写入时内容追加

JAVA实现CSV的读写操作

搬砖人生的博客 8777

基于DE2-115红外解码实验

基于DE2-115红外解码实验   一、   功能描述 在同一个遥控电路中通常要使用实现不同的遥控功能或区分不同的机器类型, 这样就要求信号按一定的编码传送,编码则会由编码芯片或电路完成。对应于编码芯片通常会有相配对的解码芯片或包含解码模块的应用芯片。在实际的产品设计或业余电子制作中,编码芯片并一定能完成我们要求的功能,这时我们就需要了解所使用的编码芯片到底是如何编码的。只有知道编码方式,我...

乘风的博客 2516

手把手教你设计STM32的JTAG电路:从原理图到PCB布局(含JLINK连接详解)

本文详细介绍了STM32的JTAG电路设计全流程,从核心原理、接口规范到PCB布局布线技巧,特别包含JLINK调试器的连接与配置方法。通过信号滤波、上拉配置和防反接保护等关键设计要点,帮助开发者构建稳定可靠的JTAG调试环境,提升嵌入式开发效率。

weixin_29159441的博客 392

java读取文件的方式和效率比较

1.按照字节读取 public String readFileByByte(String filePath){ long beginTime =System.currentTimeMillis(); StringBuffer stringBuffer=new StringBuffer(); byte[] buffer=new byte[2048];//现在一次读取2048字节,可以一次性读取文件的...

gaga的博客 3665

rk3568 修改开机动画

bootanimation.zip是一个Android设备启动时播放的动画文件,它包含了一系列的图片和描述文件,用于描述动画的播放顺序和持续时间。

weixin_35723192的博客 2730

Java读取txt文件和写入txt文件

原文: Java读取txt文件和写入txt文件写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂! package edu.thu.keyword.test; import java.io.File; import java.io.InputStreamReader; i

nickwong & nickwang 33万+

Coze智能体开发:搭建一个解析 PDF 文件的工作流

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 2814

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

NPU(Neural Processing Unit) 是专门用于人工神经网络推理与训练的处理器,具备高并行、低功耗、低延迟等特点。它是边缘 AI、自动驾驶、智能摄像头、语音识别等场景中的关键硬件。

moton2017的博客 2255

java 文件写入 读取_JAVA文件的两种读取方法和三种写入方法

在使用java对文件进行读写操作时,有多种方法可以使用,但不同的方法有不同的性能。此文对常用的读写方法进行了整理,以备不时之需。1、文件的读取主要介绍两种常用的读取方法。按行读取和按字符块读取。1.1 一次读取一行作为输入//按行读取文件内容public static String Read1(String infile)throws Exception//infile="data/in.txt"...

weixin_30666427的博客 3821

C# WinForm上位机:从串口调试工具到智能温控系统(Modbus RTU协议实战+完整源码)

做工业上位机开发时,我们常从串口调试工具入手:验证设备通信、查看数据帧,但面对实际场景(比如温控、电机控制),单纯的“收发数据”远远不够——需要解析工业标准协议(如Modbus RTU)、实时监控关键指标、实现自动化控制逻辑,还要有稳定的UI交互和数据记录。串口调试工具能收发数据,但看不懂Modbus RTU帧(地址、功能码、寄存器、CRC校验);想控制温控设备(如加热器、风扇),但不知道如何通过Modbus写入控制指令;手动调节目标温度时,温度波动大,需要PID算法实现精准控温,但不会集成;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1304

java 读取文件 效率_Java 逐行读取文本文件的几种方式以及效率对比

前言上周负责的模块中需要逐行读取文件内容, 写完之后对程序执行效率不太满意, 索性上网查了一下 Java 逐行读取文件内容的各种方法, 并且简单地比对了一下执行效率. 在此记录, 希望能够帮到有需要的人.注意: 本文比对的项目为 逐行读取文本内容, 并不能代表其他方式的文件读取效率优劣!!!文末有完整代码.先放结果1000000 行文本读取结果比对:BufferedReader 耗时: 49msS...

weixin_42500963的博客 1837

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java 读取写入文件文本内容的多种方式及推荐

java 读取写入文件文本内容的所有方式及推荐 有许多方法可以读取Java中的文本文件。 文本文件由字符组成,因此我们可以使用Reader类。 也有一些实用程序类可以读取Java中的文本文件。 Java read text file usingFileInputStream class Java使用FileInputStream读取文本文件 Java read text file usingFiles class Java使用Files类读取文本文件 Read text file in...

dmlcq的博客 2058

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java读文件几种方式_java中读取文件的方式有哪几种

java中读取文件的方式有哪几种发布时间:2020-06-19 13:36:48来源:亿速云阅读:135作者:鸽子读取文件有多种方式,基于传统的输入流方式或基于nio的Buffer缓冲对象和管道读取方式甚至非常快速的内存映射读取文件。java中四种读取文件方式:1、RandomAccessFile:随机读取,比较慢优点就是该类可读可写可操作文件指针2、FileInputStream:io普通输入流...

weixin_30269407的博客 1717

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java io流文件读取和写入

Java io 流操作demo类 1.读取操作 /** *@author lxw *@date 2020/6/24 *@desc 获取文件输入流,这里读入内存中 *@param [fileName] *@return byte[] **/ public byte[] readPdfFile(String fileName) throws Exception{ InputStream in = null;

lxwfly的博客 7435

Java复制文件的几种方式 (含具体的效率比较)

部分内容参考了这篇博客 java复制文件的4种方式 - 夏嘻嘻嘻嘻嘻 - 博客园 一、字节流复制文件 这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。 这是第一个方法的代码: private static void copyFileUsingFileStreams(Fil...

wangpailiulanqi8的博客 2898

java 读取文件 效率_java读取文件的几种方式性能比较

//普通输入流读取文件内容public static longchecksumInputStream(Path filename){try(InputStream in=Files.newInputStream(filename)){CRC32 crc=newCRC32();intc;while ((c=in.read())!=-1){crc.update(c);}returncrc.getVal...

weixin_30184337的博客 464

java读取文件的几种方式性能比较

//普通输入流读取文件内容 public static long checksumInputStream(Path filename) { try(InputStream in= Files.newInputStream(filename)) { CRC32 crc=new CRC32(); ...

weixin_30911809的博客 357

Java 读取 文本文件的几种方式

本文简要介绍了Java读取文本文件的几种方式:使用InputStreamReader、使用

semicloud的专栏 1521
上一篇: 编译maven项目出现Could not find artifact org.restlet.jee:org.restlet.parent:pom:2.2.1问题
下一篇: java 嵌入js线程异步调用和验证字符串是否json格式
Code Space
博客等级 码龄14年 8粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值