zoukankan      html  css  js  c++  java
  • java InputStream使用

    InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len)。其中read()方法是一次读取一个字节,效率是非常低的。所以最好是使用后面两个方法。
    	/**
    	 * 读取流
    	 * 
    	 * @param inStream
    	 * @return 字节数组
    	 * @throws Exception
    	 */
    	public static byte[] readStream(InputStream inStream) throws Exception {
    		ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
    		byte[] buffer = new byte[1024];
    		int len = -1;
    		while ((len = inStream.read(buffer)) != -1) {
    			outSteam.write(buffer, 0, len);
    		}
    		outSteam.close();
    		inStream.close();
    		return outSteam.toByteArray();
    	}


    这里不能使用成:

    InputStream is = conn.getInputStream();

    PrintStream ps =new PrintStream(new File("d:/a.txt"));

    byte[] buffer = new byte[1024];

    while((is.read(buffer,0,byte.length) )) > 0){
    ps.write(buffer,0,byte.length);
    }

    这样会导致输出文件中有很多NULL和乱码。因为实际读到的长度可能没有1024这么长,导致后面用很多NULL来补充,出现乱码等情况。


  • 相关阅读:
    linux内核编译
    字符设备驱动ioctl实现用户层内核层通信
    Linux内核完全剖析基于0.12内核
    KVM分析报告
    kvm的vmcall
    kvm源代码分析
    KVM基本概念
    linux系统调用
    UML的9种图例解析(转)
    SurfaceView的基本使用(转)
  • 原文地址:https://www.cnblogs.com/riasky/p/3507505.html
Copyright © 2011-2022 走看看