• 字节输入输出流,字符输入输出流,转换流,字节缓冲流


    1.字节输入输出流是通过read字节和write字节的方式来完成对文件等的读取和写入,它的read和write方法同时也支持byte数组,下面是通过字节数组输入输出的复制文件的方法。其中计算一下整个过程的时间,经计算为7秒。

    public static void method1() throws IOException{
    		long x=System.currentTimeMillis();
    		FileInputStream fis=new FileInputStream("C:\G\软件包\eclipse.zip");
    		FileOutputStream fos=new FileOutputStream("C:\Users\Rui\Desktop\新建文件夹\eclipse.zip");
    		byte[] bytes=new byte[1024];
    		int len=0;
    		while((len=fis.read(bytes))!=-1){
    			fos.write(bytes,0,len);
    		}
    		fos.close();
    		fis.close();
    		long y=System.currentTimeMillis();
    		System.out.println((y-x)/1000);
    	}
    

     2.字符输入输出流,是通过读取字符和写入字符的方式来完成对文件等的读取和写入,它的read和write方法支持char数组,write支持字符串,但是read不支持。下面是一个通过字符流来复制txt文件的例子。

    public static void method2() throws IOException{
    		FileReader fr=new FileReader("C:\Users\Rui\Desktop\课件\作业\61作业.txt");
    		FileWriter fw=new FileWriter("C:\Users\Rui\Desktop\新建文件夹\61作业.txt");
    		int len=0;
    		while((len=fr.read())!=-1){
    			fw.write(len);
    		}
    		fw.flush();
    		fw.close();
    		fr.close();
    	}
    

    注:字符流不要忘了刷新缓存,否则文字不会复制进去。

     3.转换流为在读写过程中转换utf-8与gdk编码格式的方法,它可以复制utf-8编码的文件,下面是一个例子。

    public static void method3() throws IOException{
            FileInputStream fis=new FileInputStream("C:\Users\Rui\Desktop\read\utf.txt");
            FileOutputStream fos=new FileOutputStream("C:\Users\Rui\Desktop\新建文件夹\utf.txt");
            InputStreamReader isr=new InputStreamReader(fis,"utf8");
            OutputStreamWriter osw=new OutputStreamWriter(fos,"utf8");
            int len=0;
            char[] ch=new char[1024];
            while((len=isr.read(ch))!=-1){
                osw.write(ch, 0, len);
            }
            osw.flush();
            osw.close();
            isr.close();
        }

    注:如果关闭了转换流的对象,则嵌入的字节流对象也会跟着关闭。转换流是字符流的父类,其也遵循不刷新缓存则无法写入的规则。

    4.字节缓存流是为了加速字节流而出现的一种方法,它的格式与转换流类似,也是嵌套的形式。下面是一个例子,在这个例子中我们计算一下所需的时间。

    public static void method4() throws IOException{
    		long x=System.currentTimeMillis();
    		FileInputStream fis=new FileInputStream("C:\G\软件包\eclipse.zip");
    		BufferedInputStream bis=new BufferedInputStream(fis);
    		FileOutputStream fos=new FileOutputStream("C:\Users\Rui\Desktop\新建文件夹\eclipse.zip");
    		BufferedOutputStream bos=new BufferedOutputStream(fos);
    		byte[] bytes=new byte[1024];
    		int len=0;
    		while((len=bis.read(bytes))!=-1){
    			bos.write(bytes,0,len);
    		}
    		bos.flush();
    		bos.close();
    		bis.close();
    		long y=System.currentTimeMillis();
    		System.out.println((y-x)/1000);
    	}
    

     经计算,时间仅需1s,可见大大加速了字节流所需的时间。

  • 相关阅读:
    函数的缺省参数和函数初始化示例以及布尔型参数的使用示例
    指针使用示例程序
    按值传递对象和按址传递对象
    详解js跨域
    CSS之BFC及其应用
    js图片预加载、有序加载
    12个非常有用的JavaScript技巧
    MySQL使用pt-online-change-schema工具在线修改1.6亿级数据表结构
    nodeJS实现一个在线填表应用
    浏览器的缓存机制
  • 原文地址:https://www.cnblogs.com/zhangrui0328/p/9214117.html
Copyright © 2020-2023  润新知