`

字节,字节数组输入输出流ByteArrayInputStream,ByteArrayOutputStream理解

    博客分类:
  • java
 
阅读更多

 

 

字节作为数据的一种表现形式可以与其他的数据表现形式转换

1 字节理解 

2 字节与人类语言字符串转换 (new String(byte[] s) ,String.toBytes() )

3  文件与字节转换

从另一方面讲,任何东西都可以转为最小单位字节,然后做最终处理。

 

以下自己学习得到的观点,有错误的地方请指出

在通常操作用,字节接触的比较少,这里对于字节的理解进行深入学习

   1 字节是网络传输的最小单元(个人认为,自己最重要的作用,网络传输的数据包可能就是字节)

   2 网络传输过后要对字节进行编码(即不同语言规定几个字节为一个字符切分)

   3 上面得到字节序列,组合即为字符串(字符串通常是我们人所看的语言)

 

ByteArrayInputStream

ByteArrayOutputStream  

字节输入流和字节输出流 

1 因为网络传输的过程中是字节,有的时候我们可以用字节输入流来保存传输过程的输入包,然后切分字节使用 

2 有时候需要将一个文件变成字节处理,可以用将数据写到字节输出流中 

 

文件变为字节:

  

FileInputStream fis=new FileInputStream("test");
BufferedInputStream bis=new BufferedInputStream(fis);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
int c=bis.read();//读取bis流中的下一个字节
while(c!=-1){
     baos.write(c);
     c=bis.read();
}
bis.close();
byte retArr[]=baos.toByteArray(); 

 

 

 

流的使用:以下为个人理解

流分类:节点流和处理流 

节点流为直接与索要读取数据终端链接的流(如FileInputStream:直接从文件中读取,ByteArrayOutputStream : 直接从字节数组中读取,ObjectInputStream:直接从Object中读取等等 )

处理流为在节点流基础上添加新功能的流:(如DataInputStream 使流可以直接读出各种类型的数据,BufferedInputStream :使流具有缓冲功能,读取速度变快。)

 

一些测试代码:

 

字节流的使用:

	//字节输入输出 
	private static void testByteArrayStram() throws IOException{
		
		String inputStr = "我叫 唐三藏";
		byte[] bs = inputStr.getBytes(); 
		ByteArrayInputStream is = new ByteArrayInputStream(bs);
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		long start = System.currentTimeMillis();
		byte[]  buf = new byte[1024];
		int len=0 ; 
		long start1 = System.currentTimeMillis();
		while ( (len=is.read(buf, 0, buf.length))!=-1) {
//			 System.out.println( new String(buf ));
			 os.write( buf);
		}
		System.out.println(start1-System.currentTimeMillis()  );
		os.write(bs ); 
		System.out.println( os.toString());
//		System.out.println( os.);	
		
	}

 

字节流带有缓冲区:

	//带有缓冲流的 
	private static void testFileInput() throws IOException{
		FileInputStream fis = new FileInputStream(new File("E:\\study\\Hadoop权威指南++中文版.pdf"));
		BufferedInputStream bis = new BufferedInputStream( fis ); 
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		
		byte[] buf = new byte[1024];
		long len = 0 ; 
		long start  = System.currentTimeMillis() ; 
		while((len=bis.read(buf, 0, buf.length))!=-1){
			bos.write( buf ) ;
		}
		System.out.println(  System.currentTimeMillis() -start );
//		System.out.println( bos.toString() ); 
		bis.close() ;
		bos.close() ;
		 
	}

  

文件流使用:

 

	//无缓冲流的 
	private static void testFileInput2() throws IOException{
		FileInputStream fis = new FileInputStream(new File("E:\\study\\线程笔记20140606.docx"));
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
//		FileOutputStream out = new FileOutputStream(new File("E:\\study\\线程笔记1测试.docx") );
		
		byte[] buf = new byte[1024];
		long len = 0 ; 
		long start  = System.currentTimeMillis() ; 
		while((len=fis.read(buf, 0, buf.length))!=-1){
			bos.write( buf ) ;
		}
		System.out.println(  System.currentTimeMillis() -start );
//		System.out.println( bos.toString() ); 
//		bos.writeTo( out ) ; //写入到 字节输出流中的字节,在写到另一个文档中不是乱码
		
		fis.close() ;
		bos.close() ;
//		out.close();
	}	

 

 

 

 

 参考:http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html

 

 

 

分享到:
评论
1 楼 浮生一如梦 2018-06-07  
[b][i][u]
[list]
[*][img][url][flash=200,200][url][flash=200,200][*][*]
  • [*]
    [flash=200,200][url][img][list]
    [*]
    引用
    [/list][/img][/url][/flash]
    [/flash][/url][/flash][/url][/img][/list]
    [/quot
    [color=orange][/color]
    e][/u][/i][/b]   

    相关推荐

      详解Java中ByteArray字节数组的输入输出流的用法

      总的来说,ByteArrayInputStream和ByteArrayOutputStream是Java中处理字节数组输入输出的便捷工具,它们在处理小规模数据、内存中操作以及测试场景下非常实用。理解并熟练掌握这两个类的用法,对于提升Java IO编程...

      【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip

      在Java编程中,我们经常会遇到需要将字节数组转换为输入流的情况,这时ByteArrayInputStream就派上了用场。它的构造函数接受一个byte数组作为参数,然后我们可以调用read()方法来逐个读取字节,或者使用read(byte[])...

      Java实验6 输入输出流与文件操作.doc

      在Java中,输入输出流可以分为两大类:字节流(Byte Stream)和字符流(Character Stream)。 1. 字节流(Byte Stream) 字节流是Java中的基本输入输出流,用于读写二进制数据。常用的字节流类有: * ...

      java输入输出流.ppt

      Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它主要用于程序与外部资源之间的数据传输。在Java中,I/O流的概念被用来抽象各种输入源和输出目标,包括键盘、显示器、文件、网络连接等。I/O流的设计遵循...

      java 输入输出流

      除了基本的文件操作,Java IO还包含了许多其他流,如内存操作流(如`ByteArrayInputStream`和`ByteArrayOutputStream`)、管道流(`PipedInputStream`和`PipedOutputStream`)、系统级别的IO支持(如`System.in`, `...

      java输入输出流文档

      - 按数据来源分类,有文件流、字节数组流、字符数组流、字符串流以及网络数据流等。 - 按是否格式化输出,有格式化的 `PrintStream` 和 `PrintWriter` 类。 - 按是否缓冲,有缓冲流如 `BufferedInputStream` 和 `...

      java输入输出流总结.pdf

      Java 输入输出流是Java编程语言中用于处理数据输入和输出的核心机制。在Java中,输入输出流被设计成一种抽象的概念,允许程序处理各种不同类型的输入源和输出目标,包括文件、网络连接、内存缓冲等。Java.io 包提供...

      Java io输入输出流及字符集

      Java的IO(Input/Output)...理解并熟练运用这些概念,可以帮助开发者高效地处理数据输入输出,无论是文件操作还是网络通信,都能得心应手。通过阅读《IO输入输出流》.ppt,你将进一步了解这些知识点的具体应用和示例。

      字节流工具

      - 字节流分为输入流和输出流,分别用于数据的读取和写入。Java中的InputStream和OutputStream是所有字节输入流和输出流的基类。 - 字节流通常用于处理二进制数据,如图片、音频、视频文件等,因为它们的数据结构...

      Java程序设计精编教程输入流与输出流PPT学习教案.pptx

      数组流(ByteArrayInputStream, ByteArrayOutputStream)允许我们将字节数组视为流,方便数据的转换和存储。数据流(DataInputStream, DataOutputStream)则支持基本数据类型的读写,如int、float等,确保数据在网络...

      javaIO流[归纳].pdf

      - **字节数组流**:ByteArrayInputStream和ByteArrayOutputStream用于在内存中操作字节数组。例如,可以通过ByteArrayOutputStream创建一个字节数组,然后通过ByteArrayInputStream读取该数组。 Java IO流体系结构...

      JavaPD-Ch09mao文件及输入输出流1

      数组流(ByteArrayInputStream, ByteArrayOutputStream)允许直接在字节数组之间进行I/O操作,而字符串流(StringReader, StringWriter)则方便在字符串与输入/输出流之间转换。 数据流(DataInputStream, ...

      输入输出流的见解

      在Java编程中,输入输出流(Input/Output Stream)是处理数据传输的核心机制,主要用于程序与外部世界的交互,包括读取文件、网络通信、标准输入输出等。Java的`java.io`包提供了丰富的类和接口,使得开发者能够方便...

      浅谈Java的输入输出流

      Java的输入输出流(Input/Output Stream)是Java平台核心API的重要组成部分,它为程序提供了处理数据传输的基础框架。在Java中,一切I/O操作都基于流,流充当了数据从一个地方到另一个地方的通道。这篇博文将深入...

      Java实现字节流与图片的转化

      在Java中,字节流分为两种类型:输入字节流(InputStream)和输出字节流(OutputStream)。它们分别用于读取和写入数据。字节流通常用于处理非文本文件,因为这些文件由一系列字节组成,而不是字符。 要实现字节流...

      Java byte数组操纵方式代码实例解析

      ByteArrayInputStream是一个从内存中读取字节数组的流,而ByteArrayOutputStream是一个将所有的字节数组全部写入内存中的流。 下面是一个使用ByteArrayOutputStream将所有的字节数组全部写入内存中的示例代码: ``...

      java输入输出流详解.doc

      ### Java 输入输出流详解 #### 一、I/O流概述 在Java中,输入输出流是处理文件读写、网络通信等数据...以上是关于Java输入输出流的一些基础概念和使用方法的详细介绍,希望对你理解和应用Java输入输出流有所帮助。

      image与字节数组byte的互转

      在Java中,我们可以使用`FileInputStream`读取图片文件,然后用`BufferedImage`对象来处理图像,最后通过`ImageIO.write()`方法将图像写入`ByteArrayOutputStream`,得到字节数组。 ```java import javax.imageio....

    Global site tag (gtag.js) - Google Analytics