字节输入流

简介: 字节输入流

字节输入流(InputStream)用于从外部源(如文件、网络等)读取数据。它是一个抽象类,具体的实现类包括文件输入流(FileInputStream)、字节数组输入流(ByteArrayInputStream)等。

  1. read():从输入流中读取下一个字节的数据并返回。
InputStream inputStream = new FileInputStream("example.txt");
int data = inputStream.read(); // 读取单个字节数据
while (data != -1) {
    System.out.print((char) data); // 输出读取到的字节转换为字符
    data = inputStream.read(); // 继续读取下一个字节数据
}
inputStream.close(); // 关闭输入流
  1. read(byte[] b):从输入流中将数据读入到字节数组中,并返回读取的字节数。
InputStream inputStream = new FileInputStream("example.txt");
byte[] data = new byte[1024]; // 缓冲区大小
int bytesRead = inputStream.read(data); // 读取字节数组数据
while (bytesRead != -1) {
    // 处理读取到的数据
    System.out.write(data, 0, bytesRead); // 将字节数组数据输出到控制台
    bytesRead = inputStream.read(data); // 继续读取字节数组数据
}
inputStream.close(); // 关闭输入流
  1. available():获取输入流中可读取的字节数。
InputStream inputStream = new FileInputStream("example.txt");
int availableBytes = inputStream.available(); // 获取可读取的字节数
byte[] data = new byte[availableBytes];
inputStream.read(data); // 读取可用字节数组数据
inputStream.close(); // 关闭输入流
  1. skip(long n):跳过输入流中的 n 个字节的数据。
InputStream inputStream = new FileInputStream("example.txt");
inputStream.skip(5); // 跳过前5个字节数据
int data = inputStream.read(); // 读取跳过后的下一个字节
inputStream.close(); // 关闭输入流

当使用字节输入流(InputStream)时,有一些细节需要注意:

  1. 读取的数据类型: 字节输入流以字节为单位进行读取,读取的数据类型是int。即使实际上我们可能只需要读取字符数据,仍然会返回一个int值,表示读取到的字节。如果需要将其转换为字符,可以使用(char)进行强制类型转换
  2. 读取结束的标识: 当读取到达文件末尾时,read()方法将返回-1,表示没有更多的字节可读。
  3. 缓冲区: 在使用read(byte[] b)方法读取数据时,通常会创建一个字节数组作为缓冲区。缓冲区的大小可以根据需要进行调整。较大的缓冲区可以提高读取效率,但也会占用更多的内存空间。
  4. 输入流关闭: 使用完毕后,必须显式地调用close()方法来关闭输入流,释放相应的资源。关闭输入流是一个良好的编程习惯,可以避免资源泄漏和占用过多的系统资源。
  5. 异常处理: 在使用字节输入流时,可能会抛出IOException及其子类的异常。对于这些异常,建议使用try-catch语句进行捕获和处理,以确保程序的健壮性。

 


相关文章
|
6月前
|
缓存 Java 索引
ByteBuffer 字节缓冲区
ByteBuffer 字节缓冲区
64 0
|
存储 Java
字节缓冲流
字节缓冲流
|
9月前
|
移动开发 Java Linux
IO流:字节输出流FileOutputStream的超详细用法
IO流:字节输出流FileOutputStream的超详细用法
106 0
|
Java 数据处理 数据安全/隐私保护
【JavaSE专栏74】字节输入流InputStream,用于从输入源读取字节数据的流
【JavaSE专栏74】字节输入流InputStream,用于从输入源读取字节数据的流
|
自然语言处理
转换流,字节字符的转换
转换流,字节字符的转换
字节、字符输入输出流
字节、字符输入输出流
66 0
|
Java
Java IO流之访问文件的字节输入流FileInputStream和字节输入流FileOutputStream的详解
Java IO流之访问文件的字节输入流FileInputStream和字节输入流FileOutputStream的详解
115 0
缓冲流与打印流(字节与字符)
缓冲流与打印流(字节与字符)
75 0