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