码迷,mamicode.com
首页 > 编程语言 > 详细

【Java】字节流-从文件输入,输出到文件

时间:2018-10-19 00:08:40      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:字符数组   写入文件   put   新建   long   返回   目标   文件夹   读取   

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

 

【Java】字节流-从文件输入,输出到文件

标签:字符数组   写入文件   put   新建   long   返回   目标   文件夹   读取   

原文地址:https://www.cnblogs.com/to-red/p/9813281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!