Java IO输入/输出流的套接

缓冲字符流BufferedInputStream / BufferedOutputStream

文件操作流 InputStream / OutputStream

java 输入输出流的套接,测试一下流链的速度

因为节点流在程序中并不是很常用,一般常通过过滤流将多个流套接在一起,利用各流的特性共同处理数据,套接的多个流构成了一个流链;

我们来分析他们的运行时间。(因为在不同的系统(maxOX,Linux,WIN(32/64))上运行的时间可能都不相同)我截取了几段时间来进行对比。

1.缓冲字符流BufferedInputStream / BufferedOutputStream

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        long StartTime = System.nanoTime();
        File address = new File("D:"+File.separator+"c.txt");
        File address1 = new File("D:"+File.separator+"ww.txt");

        BufferedInputStream bin = new BufferedInputStream(new FileInputStream(address));
        BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(address1));
        int c ;
        while((c=bin.read())!=-1) {
            bout.write(c);
        }
        bin.close();
        bout.flush();
        bout.close();
        System.out.println("复制完成");
        long endTime = System.nanoTime();
        System.out.println((endTime-StartTime)+"ms");
    }
}

2.文件操作流 InputStream / OutputStream

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args)throws IOException {
        long StartTime = System.nanoTime();
        File address = new File("D:"+File.separator+"c.txt");
        File address1 = new File("D:"+File.separator+"ww.txt");

        InputStream in = new FileInputStream(address);
        OutputStream out = new FileOutputStream (address1);

        int c ;
        while((c=in.read())!=-1) {
            out.write(c);
        }
        in.close();
        out.flush();
        out.close();
        System.out.println("复制完成");
        long endTime = System.nanoTime();
        System.out.println((endTime-StartTime)+"ms");
    }
}

3.java 输入输出流的套接

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws IOException {
        long StartTime = System.nanoTime();
        File address = new File("D:"+File.separator+"c.txt");
        File address1 = new File("D:"+File.separator+"ww.txt");

        BufferedInputStream bin = new BufferedInputStream(new FileInputStream(address));
        BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(address1));

        InputStream din = new DataInputStream(bin);
        OutputStream dout = new DataOutputStream(bout);
        int c ;
        while((c = din.read())!=-1) {
            dout.write(c);
        }

        bin.close();
        bout.flush();
        bout.close();

        din.close();
        dout.flush();
        dout.close();

        System.out.println("复制成功");
        long endTime = System.nanoTime();
        System.out.println((endTime-StartTime)+"ms");
        }
}

他们的运行时间在某种程度上是类似的,因为他们每次只读取一个字符,然后写入到文件中。

他们的使用需要看场景选择:

普通的文件输入输出时 选择 FileInputStream类

在需要更快的输入输出时选择 Buffering类

在多重输入输出时选择Java 输入输出流的套接,可以方便处理数据并提高处理的效率。

原文地址:https://www.cnblogs.com/algorithmvcerhj/p/9094973.html

时间: 2024-11-12 16:30:31

Java IO输入/输出流的套接的相关文章

java.IO输入输出流:过滤流:buffer流和data流

java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? 不带缓冲的操作,每读一个字节就要写入一个字节. 由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低. 带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里. 等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多! 这就是两者的区别

Java IO输入输出流 笔记

String s = "慕课ABC"; byte[] bytes1 = s.getBytes();//转换成字节序列用的是项目默认的编码 ,编码GBK for(byte b : bytes1) { //把字节(转换成)int以16进制的方式显示, 只显示后8位 System.out.println(Integer.toHexString(b & 0xff) + " "); } //gbk编码中文占用两个字节,英文占用1个字节 //utf-8编码中文占用3个字

java io 输入输出流

数据流分类:流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据.因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节. http://blog.csdn.net/hguisu/article/details/7418161

Java - io输入输出流 --转换流

转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输出流的对象 * FileOutputStream fos = new FileOutputStream("e:gu.txt"); * OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8"); * * *

Java IO输入输出流 FileWriter 字符流

字节缓冲流 //为什么要使用包装流,使用包装流是为了提高读写操作的性能. public class Packing_flowDemo { public static void main(String[] args) throws Exception { File file = new File("file/packing_flow.txt"); //包装流的写法,缓冲区内存大小.1024*8=8192 (byte) // BufferedOutputStream packing = n

java IO输入输出流实现文本复制

IO输入输出流——Java面向对象基础(29)

一.概念 IO(输入输出流) InputStream 输入流 OutputStream 输出流   输入输出流广义上就是物理存储介质.设备.容器数据的传输过程.   Java中提供一个强大的api操作IO,java.io包 二.常见的File类 File常常用于操作系统文件或目录,其中常用的方法务必掌握. File file = new File("填写文件|文件目录的路径"); createNewFile()  创建文件 delete()   删除文件或目录 exists()  判断

java的输入输出流(一)

java中i/o流是java中核心的一部分,以前学过,但是理解不够深入,渐渐的也就忘了,现在在从新学习下java的io处理,写下我学习的笔记,便于记忆,和总结归纳: 本文原创,转载请注明:http://blog.csdn.net/j903829182/article/details/38407723 1.java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能:可以从不同的角度进行分类: 按数据流的方向不同可以分为输入流和输出流. 按处理数据的单位不同可以分为字节流和字符流. 按照功

java基础-输入输出流-大文本文件读取及写入另一文本-----(此程序print部分有bug,输出不正常,原因琢磨不清了。。。)

简介:如题 import java.io.FileInputStream; import java.io.FileOutputStream; /** * @author czchina * */ public class TestStream { public static void main(String[] args) { FileInputStream fls = null; FileOutputStream fos =null; try{ fls = new FileInputStrea