通过FileInputStream和FileOutputStream复制图片等非文本文件

来源:互联网 发布:小码哥java大神班视频 编辑:程序博客网 时间:2024/05/20 23:37

InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。这里,我们首先要分清楚两个概念:

  • InputStream(输入流):输入流是用来读入数据的。- - - > > >读入
  • OutputStream(输出流):输出流是用来写出数据的。- - - > > >写出

文件输入流——FileInputStream

FileInputStream 从文件系统中的某个文件中获得输入字节。

文件输出流——FileOutputStream

文件输出流是用于将数据写入到文件中。

从文件中读取数据:

import java.io.FileInputStream;/** * FileInputStream:节点流(低级流),从文件中读入数据 * @author Administrator * */public class FISDemo01 {    public static void main(String[] args){        String content=null;        try {            int size=0;            //定义一个字节缓冲区,该缓冲区的大小根据需要来定义            byte[] buffer=new byte[1024];            FileInputStream fis=new FileInputStream("FOSDemo.txt");            //循环来读取该文件中的数据            while((size=fis.read(buffer))!=-1){                content=new String(buffer, 0, size);                System.out.println(content);            }        //关闭此文件输入流并释放与此流有关的所有系统资源。         fis.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

向文件中写出数据:

import java.io.FileOutputStream;/** * FileOutputStream:节点流(低级流),向文件中写出数据  * @author Administrator * */public class FOSDemo01 {    public static void main(String[] args){        try {            //向文件中写入字节数组            String font="输出流是用来写入数据的!";            FileOutputStream fos = new FileOutputStream("FOSDemo.txt");            fos.write(font.getBytes());            //关闭此文件输出流并释放与此流有关的所有系统资源。此文件输出流不能再用于写入字节。 如果此流有一个与之关联的通道,则关闭该通道。             fos.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

使用FileInputStream和FileOutputStream实现文件的复制

import java.io.FileInputStream;import java.io.FileOutputStream;/** * 使用文件输入流和文件输出流实现文件的复制 * @author Administrator * */public class SummaryFISAndFOS {    public static void main(String[] args){        /**         * 1.先将文件中的内容读入到输入流中         * 2.将输入流中的数据通过输出流写入到目标文件中         * 3.关闭输入流和输出流         */        try {            long begin=System.currentTimeMillis();            //从输入流中读取数据            FileInputStream fis=new FileInputStream("FOSDemo.txt");            //向输出流中写入数据            FileOutputStream fos=new FileOutputStream("FISAndFOSDest.txt");            //先定义一个字节缓冲区,减少I/O次数,提高读写效率            byte[] buffer=new byte[10240];            int size=0;            while((size=fis.read(buffer))!=-1){                fos.write(buffer, 0, size);            }            fis.close();            fos.close();            long end=System.currentTimeMillis();            System.out.println("使用文件输入流和文件输出流实现文件的复制完毕!耗时:"+(end-begin)+"毫秒");        } catch (Exception e) {            e.printStackTrace();        }        //解决JNI问题(Java Native Interface)        System.exit(0);    }}

通过FileInputStream和FileOutputStream复制图片等非文本文件

package pb.io.file;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;public class ReadImage {public static void main(String[] args) {try {FileInputStream fis=new FileInputStream("c:/a.jpg");FileOutputStream fos=new FileOutputStream("c:/b.jpg");//关键是这一步,建立一个缓冲数组,对于提高复制效率十分有效int count;byte[]temp=new byte[1000];//数组的长度可以酌情自定义while((count=fis.read(temp))!=-1){//只要缓冲数组读取的数据不为空,就继续写入fos.write(temp,0,count);}fos.flush();//清空缓存fis.close();fos.close();System.out.println("拷贝成功!");} catch (IOException e) {System.out.println(e.toString());;}}}



0 0