Java字节流 从文件输入输出到文件过程解析

 更新时间:2019年09月23日 14:21:41   作者:SupermanH  
这篇文章主要介绍了Java字节流 从文件输入 输出到文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

假如需要复制一张图片,一份word,一个rar包。可以以字节流的方式,读取文件,然后输出到目标文件夹。

以复制一张4M的图片举例。

每次读一个字节:

ch = (char)System.in.read(); //读入一个字符,返回读到的字节的int表示方式,读到末尾返回-1

复制时候一个字节一个字节的读取、写入,这样是很慢的。设置一个用来缓冲的字符数组,会让复制的过程快很多(每次读入的字节变多)。

方便阅读,类的名称用中文描述

import java.io.*;
public class 字节流的缓冲区 {
  public static void main(String[] args) throws Exception {
    FileInputStream in=new FileInputStream("E:\\photo\\IMG.jpg");
    //FileOutputStream中的文件不存在,将自动新建文件
    OutputStream out=new FileOutputStream("E:\\test.jpg");
    byte[] buff=new byte[1024];
    int b;
    long beginTime=System.currentTimeMillis();
    while ((b=in.read(buff))!=-1) {
      out.write(buff,0,b);
    }
    long endTime=System.currentTimeMillis();
    System.out.println("运行时长为: "+(endTime-beginTime)+"毫秒");
    in.close();
    out.close();
    System.out.println("正常运行!");
  }
}

这里设置的字节数组是1024个字节。复制的时间比一个字节一个字节的复制快很多。

//封装了FileOutputStream管道之后,三种函数参数
//write(b) 写入一个b
//write(byte[] b) 将字节数组全部写入
//write(byte[] b,int off,int len) 例如write(byteTest,0,len)表示数组byteTest中从0开始长度为len的字节
//一般都用第3个

字节缓冲流

用BufferedInputStream和BufferedOutputStream来封装FileInputStream和FileOutputStream

方便阅读,类的名称用中文描述

import java.io.*;
public class 字节缓冲流 {
  public static void main(String[] args) throws Exception {
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream("E:\\photo\\IMG.jpg"));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("E:\\test.jpg"));
    int len;
    long begintime=System.currentTimeMillis();
    while((len=bis.read())!=-1) {
      bos.write(len);
    }
    long endtime=System.currentTimeMillis();
    System.out.println("运行时间为:"+(endtime-begintime)+"毫秒");
    bis.close();
    bos.close();
    System.out.println("正常运行");
  }
}

将String类的对象用字节流写入文件时

import java.io.*;
public class outFile {
  public static void main(String[] args) throws Exception {
    FileOutputStream out=new FileOutputStream("example.txt");
    String str="测试";
    byte[] b=str.getBytes();
    for(int i=0;i<b.length;i++) {
      out.write(b[i]);
    }
    out.close();
    System.out.println("输出成功");
  }
}

当需要以附加的形式写入文件时

FileOutputStream out=new FileOutputStream("example.txt",true);

转换流

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

String x = in.read();

InputSteamReader和OutputStreamReader为转换流,前者将字节流转化为字符流,后者将字符流转化为字节流

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java程序员应该遵守的10条纪律

    Java程序员应该遵守的10条纪律

    Java程序员有许多应遵循的守则或最佳实践方式。本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们,将会导致灾难性后果。
    2015-09-09
  • Java并发 线程间的等待与通知

    Java并发 线程间的等待与通知

    这篇文章主要介绍了Java并发 线程间的等待与通知,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java 并发中的原子性与可视性实例详解

    java 并发中的原子性与可视性实例详解

    这篇文章主要介绍了java 并发中的原子性与可视性实例详解的相关资料,原子性是说一个操作是否可分割。可见性是说操作结果其他线程是否可见。需要的朋友可以参考下
    2017-07-07
  • Java基于IDEA实现qq邮件发送小程序

    Java基于IDEA实现qq邮件发送小程序

    这篇文章主要介绍了Java基于IDEA实现qq邮件发送小程序功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • springboot使用jasypt加密库实现数据库加解密示例代码

    springboot使用jasypt加密库实现数据库加解密示例代码

    这篇文章主要给大家介绍了关于springboot使用jasypt加密库实现数据库加解密的相关资料,Jasypt是一个用于配置文件加密的Java库,它可以用来加密和解密配置文件中的敏感信息,如数据库密码、API 密钥等,需要的朋友可以参考下
    2024-04-04
  • 教你如何用Eclipse创建一个Maven项目

    教你如何用Eclipse创建一个Maven项目

    这篇文章主要介绍了教你如何用Eclipse创建一个Maven项目,文中有非常详细的代码示例,对正在入门Java的小伙伴们是非常有帮助的哟,需要的朋友可以参考下
    2021-05-05
  • 基于Java编写一个实用的ExcelUtil工具类

    基于Java编写一个实用的ExcelUtil工具类

    在项目中经常遇到excel表格导入导出功能,每次都要重复写有关excel 的逻辑,所以本文直接使用Java编写一个实用的ExcelUtil工具类,希望对大家有所帮助
    2024-04-04
  • 一个简单的Spring容器初始化流程详解

    一个简单的Spring容器初始化流程详解

    这篇文章主要给大家介绍了一个简单的Spring容器初始化流程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • JavaCV 图像边缘检测之Canny 算法详解

    JavaCV 图像边缘检测之Canny 算法详解

    在图像处理中,边缘检测是基础且关键的一环,其中Canny边缘检测算法以其高精度和可靠性著称,本文详细介绍了使用JavaCV库实现Canny算法的原理和步骤,结合代码示例和案例分析,展示了Canny算法在Java环境下的实现过程和边缘检测效果
    2024-11-11
  • 使用cmd根据WSDL网址生成java客户端代码的实现

    使用cmd根据WSDL网址生成java客户端代码的实现

    这篇文章主要介绍了使用cmd根据WSDL网址生成java客户端代码的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论