美文网首页
I/O流存储对比

I/O流存储对比

作者: AnnieAri | 来源:发表于2017-06-06 12:19 被阅读0次
/*
 * 需求:将d:\\test.avi文件进行复制
 *      采用4种方式复制
 *      方式1: 采用基本的流,一次一个字节的方式复制 共耗时 224613毫秒
 *      方式2: 采用基本的流,一个多个字节的方式赋值 共耗时     327毫秒
 *      方式3: 采用高效的流,一次一个字节的方式复制 共耗时    2047毫秒
 *      方式4: 采用高效的流,一个多个字节的方式赋值 共耗时      96毫秒
 * 
 * 数据源: d:\\test.avi
 * 目的地1: d:\\copy1.avi
 * 目的地2: d:\\copy2.avi
 * 目的地3: d:\\copy3.avi
 * 目的地4: d:\\copy4.avi
 * 
 * 实现的步骤:
 *  1,指定数据源
 *  2,指定目的地
 *  3,读数据
 *  4,写数据
 *  5,关闭流
 * 
 */
public class CopyAVI {
    public static void main(String[] args) throws IOException {
        //开始计时
        long start = System.currentTimeMillis();
        //方式1: 采用基本的流,一次一个字节的方式复制
        //method1("d:\\test.avi", "d:\\copy1.avi");
        //方式2: 采用基本的流,一个多个字节的方式赋值
        //method2("d:\\test.avi", "d:\\copy2.avi");
        //方式3: 采用高效的流,一次一个字节的方式复制
        //method3("d:\\test.avi", "d:\\copy3.avi");
        //方式4: 采用高效的流,一个多个字节的方式赋值
        method4("d:\\test.avi", "d:\\copy4.avi");
        
        //结束计时
        long end = System.currentTimeMillis();
        //打印耗时多少毫秒
        System.out.println("共耗时 " +(end - start)+ "毫秒");
    }
    
    //方式4: 采用高效的流,一个多个字节的方式赋值
    private static void method4(String src, String dest) throws IOException {
        //1,指定数据源
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(src));
         //2,指定目的地
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dest));
         //3,读数据
        byte[] buffer = new byte[1024];
        int len = -1;
        while ( (len = in.read(buffer)) != -1) {
            //4,写数据
            out.write(buffer, 0, len);
        }
         //5,关闭流
        in.close();
        out.close();
    }

    //方式3: 采用高效的流,一次一个字节的方式复制
    private static void method3(String src, String dest) throws IOException {
        //1,指定数据源
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(src));
         //2,指定目的地
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dest));
         //3,读数据
        int ch = -1;
        while ((ch=in.read()) != -1) {
            //4,写数据
            out.write(ch);  
        }       
         //5,关闭流
        in.close();
        out.close();
    }

    //方式2: 采用基本的流,一个多个字节的方式赋值
    private static void method2(String src, String dest) throws IOException {
        //1,指定数据源
        FileInputStream in = new FileInputStream(src);
        //2,指定目的地
        FileOutputStream out = new FileOutputStream(dest);
        //3,读数据
        byte[] buffer = new byte[1024];
        int len = -1;
        while ( (len=in.read(buffer)) != -1) {
            //4,写数据
            out.write(buffer, 0, len);
        }
        //5,关闭流
        in.close();
        out.close();
    }

    //方式1: 采用基本的流,一次一个字节的方式复制
    private static void method1(String src, String dest) throws IOException {
        //1,指定数据源
        FileInputStream in = new FileInputStream(src);
        //2,指定目的地
        FileOutputStream out = new FileOutputStream(dest);
        //3,读数据
        int ch = -1;
        while (( ch=in.read()) != -1) {
            //4,写数据
            out.write(ch);
        }
        //5,关闭流
        in.close();
        out.close();
    }
}

字节流

  • 字节输入流 InputStream
  • FileInputStream 操作文件的字节输入流
  • BufferedInputStream高效的字节输入流
  • 字节输出流 OutputStram
  • FileOutputStream 操作文件的字节输出流
  • BufferedOutputStream 高效的字节输出流\

字符流

  • 字符输入流 Reader
  • FileReader 操作文件的字符输入流
  • BufferedReader 高效的字符输入流
  • InputStreamReader 输入操作的转换流(把字节流封装成字符流)
  • 字符输出流 Writer
  • FileWriter 操作文件的字符输出流
  • BufferedWriter 高效的字符输出流
  • OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)

方法:

  • 读数据方法:
  • read() 一次读一个字节或字符的方法
  • read(byte[] char[]) 一次读一个数组数据的方法
  • readLine() 一次读一行字符串的方法(BufferedReader类特有方法)
  • readObject() 从流中读取对象(ObjectInputStream特有方法)
  • 写数据方法:
  • write(int) 一次写一个字节或字符到文件中
  • write(byte[] char[]) 一次写一个数组数据到文件中
  • write(String) 一次写一个字符串内容到文件中
  • writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)
  • newLine() 写一个换行符号(BufferedWriter类特有方法)

向文件中写入数据的过程

1,创建输出流对象
2,写数据到文件
3,关闭输出流

从文件中读数据的过程

1, 创建输入流对象
2, 从文件中读数据
3, 关闭输入流

文件复制的过程

1, 创建输入流(数据源)
2, 创建输出流(目的地)
3, 从输入流中读数据
4, 通过输出流,把数据写入目的地
5, 关闭流

相关文章

  • I/O流存储对比

    字节流 字节输入流 InputStream FileInputStream 操作文件的字节输入流 Buffered...

  • java基础-I/O流

    知识点 I/O流的基本知识 I/O流中常用流的关系 I/O流之FileInputSrteam,FileOutput...

  • Java第四天

    一、I/O流的概述和分类 (一)为什么学习IO流 集合存储数据只能在内存中存储数据,不能永久的存储,会导致数据的丢...

  • Java-I/O流

    总结 I/O流分类 按照操作单元划分,字节I/O系统和字符I/O系统。 按照流的流向分,可以将流分为输入流和输出流...

  • I/O流

    java常见的I/O流

  • I/O流

    输入输出流 Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.i...

  • I/O流

    2.1、线程池 理解为容器,装有预先创建好的线程,执行任务。执行后归还给线程池等待下次分配任务。为了降低程序的开销...

  • Java中的I/O流

    谷歌I/O大会,现在赶一下时髦,在这里说一下Java的I/O流。I/O流可以简单的理解input/output流,...

  • MMAP-存储映射I/O

    存储映射I/O 介绍 存储映射IO(Memory-mapped I/O) 使用一个磁盘文件与存储空间的一个缓冲区相...

  • Java-10 I/O流

    I/O流全称是Input/Output Stream,译为输入输出流 I/O流常用的类型都在java.io包中 类...

网友评论

      本文标题:I/O流存储对比

      本文链接:https://www.haomeiwen.com/subject/eppgfxtx.html