昨天晚上研究了一点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();
}
}
}
采用不同的编码,输出结果是不一样的,有的会是乱码形式。至于采用什么样的编码,应该跟操作系统的字符编码有关。
分享到:
相关推荐
字节流基类有:字节输入流(InputStream)、字节输出流(OutputStream);主要用在按字节来处理二进制数据。 InputStream是字节输入流的抽象类,用于读取字节流的抽象类。InputStream的作用是标志那些从不同数据...
2. InputStreamReader:从输入流中读取数据,连接输入流于读取器 3. FileReader:从本地文件系统中读取字符序列 4. StringReader:从字符串中读取字符序列 5. PipedReader:从线程管道中读取字符序列 ...
字节流主要分为输入流和输出流,其中InputStream类是所有字节输入流的基类,而OutputStream类则是所有字节输出流的基类。在实际应用中,我们经常需要对文本文件进行读取,特别是逐行读取,`readLine()`方法就是为此...
InputStream是所有字节输入流的抽象基类,例如FileInputStream,用于从文件中读取字节;OutputStream则是所有字节输出流的基类,如FileOutputStream,用于向文件写入字节。字节流适合处理非文本数据,如图像、音频或...
在Java中,字节流分为两种类型:输入字节流(InputStream)和输出字节流(OutputStream)。它们分别用于读取和写入数据。字节流通常用于处理非文本文件,因为这些文件由一系列字节组成,而不是字符。 要实现字节流...
Java提供了两种类型的字节流:输入流(InputStream)和输出流(OutputStream)。它们分别用于读取和写入数据。例如,FileInputStream和FileOutputStream是与文件交互的字节流类。 要将图片转化为字节流,可以遵循...
首先,字节流被分为两类:输入流(InputStream)和输出流(OutputStream)。它们分别用于读取和写入数据到不同来源,如文件、网络连接或内存。Java的`java.io`包提供了大量预定义的字节流类,例如`FileInputStream`...
- **`public int read(byte[] b, int off, int len)`**:从输入流读取最多len个字节到数组b中,从下标off开始。返回实际读取的字节数,如果流结束,返回-1。 - **`public void write(int b)`**:向输出流写入一个...
- `public FileInputStream(File file)`:创建一个新的文件输入流以从由指定`File`对象表示的文件中读取字节。 - **示例代码**: ```java import java.io.FileInputStream; class Echo2 { public Echo2...
在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流处理的是16位的Unicode字符。这两种流都有...
在Java编程语言中,输入/输出(I/O)操作是处理数据流的关键部分,而字符流与字节流则是实现这些操作的两种基本方式。理解它们的区别和应用场景对于任何Java开发者来说都是至关重要的。 ### 字节流 字节流是最基本...
2. **字符流**:字符流处理Unicode字符数据,分为字符输入流(Reader)和字符输出流(Writer)。Reader的基类是`java.io.Reader`,Writer的基类是`java.io.Writer`。比如,`FileReader`用于读取字符文件,`...
InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符输出流的桥梁。它们都接受一个InputStream或OutputStream作为参数,然后根据指定的字符集进行转换。 ```java import ...
总的来说,Java中的字节流提供了一套全面的API来处理各种输入输出操作,包括文件、网络、内存等。通过组合使用不同的流类和工具类,开发者可以灵活地实现数据的读取、写入和转换。在实际项目中,理解并熟练掌握这些...
Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...
- **字节输入流(Byte InputStream)**:`InputStream`是所有字节输入流的基类,掌握其使用方法对于理解字节输入流至关重要。这个类封装了读取和操作数据的基本方法,其子类可以根据需求覆盖这些方法,从而确保所有...
`InputStream`作为所有字节输入流的基类,提供了读取字节数据的基本方法。例如,`read()`方法用于读取单个字节,`read(byte[] b)`用于读取字节数组。`OutputStream`则是所有字节输出流的基类,它提供写入字节数据的...
字节流分为输入流和输出流,Java的字节输入流主要由`InputStream`类及其子类代表,如`FileInputStream`用于从文件中读取字节数据;字节输出流主要由`OutputStream`类及其子类代表,如`FileOutputStream`用于向文件...
Java的输入输出流分为字节流和字符流两大类,每类又分别有输入流和输出流四种类型,即InputStream、OutputStream、Reader和Writer。下面我们将深入探讨这些概念,并通过一个简单的例子来说明其使用方法。 字节流...
InputStream类是所有字节输入流的基类,提供了诸如read()和skip()等基本方法。例如,FileInputStream类是用于从文件读取字节的输入流,可以通过文件路径、File对象或FileDescriptor对象进行初始化。而...