Java IO输入/输出流的套接

Posted algorithmvcerhj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 输入输出流的套接,可以方便处理数据并提高处理的效率。

 

以上是关于Java IO输入/输出流的套接的主要内容,如果未能解决你的问题,请参考以下文章

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段

Java中的输入输出IO流的常见相关面试题目

java中的io流都有哪些

java中IO流,输入输出流的概述

练习-Java输入输出之字节缓冲IO流之字节缓存流的高性能

练习-Java输入输出之字节缓冲IO流之字节缓存流的高性能