`

Java字节输入流2

    博客分类:
  • Java
阅读更多

      昨天晚上研究了一点Java的字节输入流,但输出的都是一个个的数字,那怎么把其输出为原来的样子呢?今天试了一下,如下面的代码。

 

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
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()
	{
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		try 
		{
			out.write("abc123中国456def".getBytes());
			byte[] buffer = out.toByteArray();
			out.close();
			
			ByteArrayInputStream in = new ByteArrayInputStream(buffer);
			byte[] buff = new byte[in.available()];
			in.read(buff);
			in.close();
			
			System.out.println(new String(buff, "UTF-8")); //输出结果为:abc123?й?456def
			System.out.println(new String(buff, "GB2312")); //输出结果为:abc123中国456def
			System.out.println(new String(buff, "GBK")); //输出结果为:abc123中国456def
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void fileInputStreamTest()
	{
		try 
		{
			//a.txt中内容为:abc中国def
			FileInputStream is = new FileInputStream("C:\\a.txt");
			byte[] buff = new byte[is.available()];
			is.read(buff);
			
			System.out.println(new String(buff, "UTF-8")); //输出结果为:abc123?й?456def
			System.out.println(new String(buff, "GB2312")); //输出结果为:abc123中国456def
			System.out.println(new String(buff, "GBK")); //输出结果为:abc123中国456def
			
			is.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

      采用不同的编码,输出结果是不一样的,有的会是乱码形式。至于采用什么样的编码,应该跟操作系统的字符编码有关。

 

 

11
1
分享到:
评论
7 楼 liuzhaodong89 2009-01-04  
不错不错
6 楼 yoyo08 2009-01-02  
java.lang.Object 写道

这得看你的操作系统的默认编码 你当时的文件的编码是什么也很重要的

说的对 确实是这样
5 楼 java.lang.Object 2009-01-02  
这得看你的操作系统的默认编码,如果是LINUX而默认是UTF-8,那么你用GBK看到的字符串就是乱码了
还有,你当时的文件的编码是什么也很重要的,在WIDNOWS下面你可以用记事本把编码改成UTF-8看看,就知道了
4 楼 suifeng 2008-12-30  
曾经有个想法, 根据乱码的特征, 推断出, 乱码是怎么产生的, 怎么调整一下编码方式, 就可以把它复原. 还在思考当中, 有兴趣, 你也可以想想.
3 楼 suifeng 2008-12-30  
很有专研精神, 值得坚持
2 楼 yoyo08 2008-12-30  
就爱酒吧女郎 写道

很不错哦,厉害!!!

呵呵 过奖了 慢慢的学习而已……
1 楼 就爱酒吧女郎 2008-12-30  
很不错哦,厉害!!!

相关推荐

    Java字节流 .pdf

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

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

    2. InputStreamReader:从输入流中读取数据,连接输入流于读取器 3. FileReader:从本地文件系统中读取字符序列 4. StringReader:从字符串中读取字符序列 5. PipedReader:从线程管道中读取字符序列 ...

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

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

    Java IO 字节流 字符流

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

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

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

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

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

    ByteIO_java_字节流_

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

    Java IO字符流和字节流

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

    Java中的字节流.

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

    Java字符流和字节流

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

    JAVA 字符流与字节流

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

    java 输入输出流

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

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

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

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

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

    实验9 Java输入输出流.doc

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

    JAVA输入输出流详细解读

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

    java字节流和字符流

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

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

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

    java输入输出流的简单例子

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

    java的输入输出流

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

Global site tag (gtag.js) - Google Analytics