一、浅谈io系统

  io系统的结构化思想是:输入-转换流-装饰器-输出。

  对于字节流来说,常见的结构类为:

  

  

package com.handchina.yunmart.middleware.service;

import org.elasticsearch.common.inject.Inject;
import org.junit.Test;

import java.io.*;

/**
 * Created by yq on 2016/11/18.
 */
public class IOTestServiceTest {
    @Inject
    private IOTestService ioTestService;

    @Test
    public void testFile() {
        FileReader br = null;
        FileWriter bw = null;
        try {
            String in = "file/fileDemoIn.txt";
            String out = "file/fileDemoOut.txt";
            br = new FileReader(in);int s;
            Long start1 = System.currentTimeMillis();
            bw = new FileWriter(out);
            while ((s = br.read()) != -1) {
                bw.write(s);
            }
            System.out.println("===========================复制时间:" + (System.currentTimeMillis() - start1) + "毫秒");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void testFileDemo() {
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
            String in = "file/fileDemoIn.txt";
            String out = "file/fileDemoOut.txt";
            br = new BufferedReader(new FileReader(in));
            StringBuilder sb = new StringBuilder();
            String s = null;
            Long start1 = System.currentTimeMillis();
            while ((s = br.readLine()) != null) {
                sb.append(s);
                sb.append("\r\n");
            }
            System.out.println("===========================读取时间:" + (System.currentTimeMillis() - start1) + "毫秒");

            bw = new BufferedWriter(new FileWriter(out));
            Long start2 = System.currentTimeMillis();
            bw.write(sb.toString());
            bw.flush();
            System.out.println("===========================写入时间:" + (System.currentTimeMillis() - start2) + "毫秒");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void testByte() {
        FileInputStream bi = null;
        FileOutputStream bo = null;
        try {
            String in = "file/fileStreamIn.avi";
            String out = "file/fileStreamOut.avi";
            bi = new FileInputStream(in);
            bo = new FileOutputStream(out);
            byte[] buf = new byte[1024];
            Long start1 = System.currentTimeMillis();
            int temp = 0;
            while ((temp = bi.read(buf)) != -1) {
                bo.write(buf, 0, temp);
            }
            System.out.println("===========================复制时间:" + (System.currentTimeMillis() - start1) + "毫秒");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bi != null) {
                try {
                    bi.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bo != null) {
                try {
                    bo.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void testByteDemo() {
        BufferedInputStream bi = null;
        BufferedOutputStream bo = null;
        try {
            String in = "file/fileStreamIn.avi";
            String out = "file/fileStreamOut.avi";
            bi = new BufferedInputStream(new FileInputStream(in));
            bo = new BufferedOutputStream(new FileOutputStream(out));
            byte[] buf = new byte[1024];
            Long start1 = System.currentTimeMillis();
            int temp = 0;
            while ((temp = bi.read(buf)) != -1) {
                bo.write(buf, 0, temp);
            }
            System.out.println("===========================复制时间:" + (System.currentTimeMillis() - start1) + "毫秒");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bi != null) {
                try {
                    bi.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bo != null) {
                try {
                    bo.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

io系统的更多相关文章

  1. 从零开始山寨Caffe·拾贰:IO系统(四)

    消费者 回忆:生产者提供产品的接口 在第捌章,IO系统(二)中,生产者DataReader提供了外部消费接口: class DataReader { public: ......... Blockin ...

  2. 从零开始山寨Caffe·陆:IO系统(一)

    你说你学过操作系统这门课?写个无Bug的生产者和消费者模型试试! ——你真的学好了操作系统这门课嘛? 在第壹章,展示过这样图: 其中,左半部分构成了新版Caffe最恼人.最庞大的IO系统. 也是历来最 ...

  3. java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET

    java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET 亲,“社区之星”已经一周岁了!      社区福利快来领取免费参加MDCC大会机会哦    Tag功能介绍—我们 ...

  4. 彻底明白Java的IO系统

    java学习:彻底明白Java的IO系统 文章来源:互联网 一. Input和Output1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源.在Java的IO中,所有 ...

  5. 什么是PROFINET IO系统的实时性

    实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行. PROFINET IO系统的实时性就是指当有一个外部事件发生时,从输入信号到传输.到控制 ...

  6. Java的IO系统

     Java IO系统     "对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务."     由于存在大量不同的设计方案,所以该任务的困难性是很容易证明的.其中最大的 ...

  7. 【Java基础系列】Java IO系统

    前言 创建好的输入/输出系统不仅要考虑三种不同种类的IO系统(文件,控制台,网络连接)还需要通过大量不同的方式与他们通信(顺序,随机访问,二进制,字符,按行,按字等等). 一.输入和输出 Java的I ...

  8. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

    Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...

  9. Qt-QML-C++交互实现文件IO系统

    QMl是没有自己的文件IO控制的,这里如果我们需要对文件进行读写操作,那么就需要去C++或者JS完成交互,交互方式有多种,由于我还没有掌握,这里就不介绍具体的交互方式了.这里就简单说明一下我的实现过程 ...

随机推荐

  1. Java基础知识强化59:String(字符串)和其他类型的相互转化

    1. String类型 ---> 其他类型 (1)使用基本类型包装类的parseXXX方法 e.g:String(字符串)转化为int(整型) String MyNumber ="12 ...

  2. mybati之#与$的区别

    $是用于sql的拼接: //因为user_name是String类型,所以在sql中加上单引号,需要手动的判断数据类型,value是如果没有指定参数的话,value就是默认参数名称,获取穿的参数就是: ...

  3. 使用SQL语句创建和删除约束

    原文:http://blog.csdn.net/hamber_bao/article/details/6504905 约束的目的就是确保表中的数据的完整性. 常用的约束类型如下: 主键约束:(Prim ...

  4. css实现ie6以上文字高度未知垂直居中

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. C#程序调用cmd执行命令-MySql备份还原

    1.简单实例 //备份还原mysql public static void TestOne() { Process p = new Process(); p.StartInfo.FileName = ...

  6. 关于html页面图片自动撑开的问题

    如下列代码: <div id="divnr" style="text-align: center; margin: 10px; width:600px;" ...

  7. (转)js学习笔记()函数

    1.调用函数时,如果参数多于定义时的个数,则多余的参数将会被忽略,如果少于定义时的个数则缺失的参数数会被自动赋予undefined值. 2.如果是用function语句声明的函数定义则不可以出现在循环 ...

  8. ORACLE中使用SQL的正则表达式判断邮箱格式

    在数据库中,有时需要判断字符串是否是一个或者多个邮箱格式,可以使用如下语句判断: ) FROM dual WHERE regexp_like(v_mail,'^\w+((-\w+)|(\.\w+))* ...

  9. MySQL学习笔记(5) - 修改和删除数据库

    1.完整语句 ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACHER SET [=] charset_name; 2.修改数据库的编码方式 al ...

  10. C# HashSet类(复杂)对象的去重

    public class Student { public string Id { get; set; } public string Name { get; set; } public overri ...