java InputStream使用

来源:互联网 发布:linux shell 启动进程 编辑:程序博客网 时间:2024/06/03 23:43
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来补充,出现乱码等情况。


1 0