`

Java字节输入流

    博客分类:
  • Java
阅读更多

    学习了一下Java的字节输入流,下面是其使用入门的几个小例子。

 

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class inputStreamTest 
{
	public static void main(String[] args)
	{
		byteArrayInputStream();
		
		fileInputStreamTest();
	}
	
	public static void byteArrayInputStream()
	{
		byte[] buffer = new byte[]{3, -1, 36, -9, 20};
		ByteArrayInputStream in = new ByteArrayInputStream(buffer);
		
//		int data = in.read();
//		while(data != -1)
//		{
			//输出结果为:3  255  36  247  20
//			System.out.print(data + "  ");    
//			data = in.read();
//		}

		byte[] buff = new byte[buffer.length];
		try
		{
			in.read(buff);
			//(需要将前面的部分注释掉)输出结果为:3  -1  36  -9  20 
			for(int i=0; i<buff.length; i++)
				System.out.print(buff[i] + "  "); 
			
		} catch(IOException e)
		{
			e.printStackTrace();
		}
		
		try 
		{
			in.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void fileInputStreamTest()
	{
		System.out.println();
		try 
		{
			//a.txt中内容为:abc中国def
			FileInputStream is = new FileInputStream("C:\\a.txt");
			
			int data = is.read();
			
			//输出结果为:97  98  99  214  208  185  250  100  101  102
			while(data != -1)
			{
				System.out.print(data + "  ");  
				data = is.read();
			}
			
			is.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

     有两点需要解释一下:

 

     对字节数组输入流( ByteArrayInputStream),对于字节类型的-9,二进制为11110111,转换为int类型(int data = in.read();)的二进制形式为00000000 00000000 00000000 11110111,因此字节类型的-9转换为int类型的247,也就会输出247. 对于-1,也是类似的情况,转换为了255.

 

      对文件输入流(FileInputStream),字符"a"、"b"、"c"的GBK编码各占1个字节,分别是97、98、99,而"中"和"国"的GBK编码各占2个字节,分别是214和208,以及185和250,所以才会有上面的输出结果。当然,也可以用read(byte[] buff)方法来读取文件以提高效率。

 

7
2
分享到:
评论

相关推荐

    Java字节流 .pdf

    字节流基类有:字节输入流(InputStream)、字节输出流(OutputStream);主要用在按字节来处理二进制数据。 InputStream是字节输入流的抽象类,用于读取字节流的抽象类。InputStream的作用是标志那些从不同数据...

    Java字节流数据逐行读取(readLine)

    字节流主要分为输入流和输出流,其中InputStream类是所有字节输入流的基类,而OutputStream类则是所有字节输出流的基类。在实际应用中,我们经常需要对文本文件进行读取,特别是逐行读取,`readLine()`方法就是为此...

    Java字节流与字符流的介绍.pdf

    FilterInputStream 类的构造方法为 FilterInputStream(InputStream),在指定的输入流之上,创建一个输入流过滤器。FilterInputStream 的常用的子类如下: 1. BufferedInputStream:缓冲区对数据的访问,以提高效率 ...

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

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

    Java IO 字节流 字符流

    InputStream是所有字节输入流的抽象基类,例如FileInputStream,用于从文件中读取字节;OutputStream则是所有字节输出流的基类,如FileOutputStream,用于向文件写入字节。字节流适合处理非文本数据,如图像、音频或...

    ByteIO_java_字节流_

    首先,字节流被分为两类:输入流(InputStream)和输出流(OutputStream)。它们分别用于读取和写入数据到不同来源,如文件、网络连接或内存。Java的`java.io`包提供了大量预定义的字节流类,例如`FileInputStream`...

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

    Java提供了两种类型的字节流:输入流(InputStream)和输出流(OutputStream)。它们分别用于读取和写入数据。例如,FileInputStream和FileOutputStream是与文件交互的字节流类。 要将图片转化为字节流,可以遵循...

    Java IO字符流和字节流

    - **`public int read(byte[] b, int off, int len)`**:从输入流读取最多len个字节到数组b中,从下标off开始。返回实际读取的字节数,如果流结束,返回-1。 - **`public void write(int b)`**:向输出流写入一个...

    java 输入输出流

    2. **字符流**:字符流处理Unicode字符数据,分为字符输入流(Reader)和字符输出流(Writer)。Reader的基类是`java.io.Reader`,Writer的基类是`java.io.Writer`。比如,`FileReader`用于读取字符文件,`...

    Java字符流和字节流

    在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流处理的是16位的Unicode字符。这两种流都有...

    Java中的字节流.

    - `public FileInputStream(File file)`:创建一个新的文件输入流以从由指定`File`对象表示的文件中读取字节。 - **示例代码**: ```java import java.io.FileInputStream; class Echo2 { public Echo2...

    JAVA 字符流与字节流

    在Java编程语言中,输入/输出(I/O)操作是处理数据流的关键部分,而字符流与字节流则是实现这些操作的两种基本方式。理解它们的区别和应用场景对于任何Java开发者来说都是至关重要的。 ### 字节流 字节流是最基本...

    java字节流和字符流[整理].pdf

    InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符输出流的桥梁。它们都接受一个InputStream或OutputStream作为参数,然后根据指定的字符集进行转换。 ```java import ...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    Java 字节流、字符流题目.docx

    字节流分为输入流和输出流,Java的字节输入流主要由`InputStream`类及其子类代表,如`FileInputStream`用于从文件中读取字节数据;字节输出流主要由`OutputStream`类及其子类代表,如`FileOutputStream`用于向文件...

    Java中对于字节流的读取方式

    总的来说,Java中的字节流提供了一套全面的API来处理各种输入输出操作,包括文件、网络、内存等。通过组合使用不同的流类和工具类,开发者可以灵活地实现数据的读取、写入和转换。在实际项目中,理解并熟练掌握这些...

    java字节流和字符流

    `InputStream`作为所有字节输入流的基类,提供了读取字节数据的基本方法。例如,`read()`方法用于读取单个字节,`read(byte[] b)`用于读取字节数组。`OutputStream`则是所有字节输出流的基类,它提供写入字节数据的...

    JAVA输入输出流详细解读

    - **字节输入流(Byte InputStream)**:`InputStream`是所有字节输入流的基类,掌握其使用方法对于理解字节输入流至关重要。这个类封装了读取和操作数据的基本方法,其子类可以根据需求覆盖这些方法,从而确保所有...

    java输入输出流的简单例子

    Java的输入输出流分为字节流和字符流两大类,每类又分别有输入流和输出流四种类型,即InputStream、OutputStream、Reader和Writer。下面我们将深入探讨这些概念,并通过一个简单的例子来说明其使用方法。 字节流...

    java的输入输出流

    InputStream类是所有字节输入流的基类,提供了诸如read()和skip()等基本方法。例如,FileInputStream类是用于从文件读取字节的输入流,可以通过文件路径、File对象或FileDescriptor对象进行初始化。而...

Global site tag (gtag.js) - Google Analytics