zoukankan      html  css  js  c++  java
  • Java IO: ByteArrayOutputStream使用

    感谢原文作者:小思思smile
    原文链接:https://blog.csdn.net/u014049880/article/details/52329333/
    更多请查阅Java API文档!

    在创建ByteArrayOutputStream类实例时,内存中会创建一个byte数组类型的缓冲区,缓冲区会随着数据的不断写入而自动增长

    可使用toByteArray()toString()获取数据。

    关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException
    在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去

    示例

    示例一:

    public static void main(String[] args) { 
        int a = 0; 
        int b = 1; 
        int c = 2; 
        ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
        bout.write(a); 
        bout.write(b); 
        bout.write(c); 
        byte[] buff = bout.toByteArray(); 
        for (int i = 0; i < buff.length; i++) 
            System.out.println(buff[i]); 
        System.out.println("***********************"); 
        ByteArrayInputStream bin = new ByteArrayInputStream(buff); 
        while ((b = bin.read()) != -1) { 
            System.out.println(b); 
        } 
    }
    
    

    示例二:

    	/**
    	 * 读取文件内容
    	 * 
    	 * @param filename 文件名
    	 * @return
    	 */
    	public String read(String filename) throws Exception
    	{
    		FileInputStream fis = new.FileInputStream(filename); 
    		ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
    		byte[] buffer = new byte[1024];
    		int len = 0;
    		// 将内容读到buffer中,读到末尾为-1
    		while ((len = fis.read(buffer)) != -1)
    		{
    			// 本例子将每次读到字节数组(buffer变量)内容写到内存缓冲区中,起到保存每次内容的作用
    			outStream.write(buffer, 0, len);
    		}
    		byte[] data = outStream.toByteArray(); // 取内存中保存的数据
    		fis.close();
    		String result = new String(data, "UTF-8");
    		return result;
    	}
    
    

    我的项目实际使用

    仓库地址:https://github.com/b84955189/TF-MIS
    源路径:src/main/java/utils/CommonUtils.java

    
        /**
         * 将输入流转为字节数组
         * @author Jason
         * @date 9:49 AM 6/19/2020
         * @param
         * @return
         */
        public static byte[] toByteArray(InputStream in) throws IOException {
            ByteOutputStream byteOutputStream = new ByteOutputStream();
            byte[] bytes = new byte[1024];
            int len=0;
            while ((len=in.read(bytes))!=-1){
                 byteOutputStream.write(bytes,0,len);
            }
            return  byteOutputStream.toByteArray();
        }
    
  • 相关阅读:
    一些技术摘选及随想
    新技术学习方法如何学习一门新编程语言(Lua)?
    什么时候该用ASSERT?
    MFC是否过时?如何学习MFC?
    Windows桌面开发者的必备软件
    Comet技术选择,论Is node.js best for Comet?
    关于C/C++内存管理一些乱讲
    debug
    C语言趣味题目
    CSS之简单的双引号
  • 原文地址:https://www.cnblogs.com/tfxz/p/13251762.html
Copyright © 2011-2022 走看看