博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java】字节流-从文件输入,输出到文件
阅读量:5891 次
发布时间:2019-06-19

本文共 2348 字,大约阅读时间需要 7 分钟。

假如需要复制一张图片,一份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

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

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

 转换流

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

String x = in.read();

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

 

转载于:https://www.cnblogs.com/to-red/p/9813281.html

你可能感兴趣的文章
高并发环境下,Redisson实现redis分布式锁
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
ABP理论学习之仓储
查看>>
我的友情链接
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
加快ALTER TABLE 操作速度
查看>>
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
作业2
查看>>
nginx的信号量
查看>>