字节流是以字节为单位进行读写数据的。InputStream和OutputStream类分别是字节输入流类和字节输出流类的抽象超类,包括了字节输入和输出的所有方法。
1)、通过字节流读写数据
Java中所有有关输入和输出的类都是从InputStream类和OutputStream类继承的。因为InputStream类和OutputStream类都是抽象的,仅提供了基本的函数类型,没有具体实现,所以不能直接生成对象。要通过其子类来生成所需的对象,同时必须重写InputStream类和OutputStream类中的方法。InputStream类时字节输入流类的超类,描述了所有字节输入的方法。下面是InputStream的主要方法。
>int read():从输入流中读取下一个字节,并以int类型返回。返回值的取值范围为0~255,若遇到输入流的末尾则返回-1。下面是对read()方法的重写:
>int read(byte b[]):从输入流中读取长度为b.length的字节到b中,并返回本次读取的字节流。如果遇到输入流的末尾则返回-1.
>int read(byte b[] , int off , intlen):与上面不同的是读取长度为len的字节,写入b从下标off开始的位置。
>void close():关闭当前的输入流,同时释放相关的系统资源。
>int available():返回当前输入流中可读取的字节数。
OutputStream是字节输出流类的超类,描述了所有字节输出的方法。下面是OutputStream的主要方法:
>void write(int b):将制定的字节b作为数据写入输出流。该方法的属性的abstract,因此必须在子类中实现。下面是对其的重写:
>voidwrite(byte b[]):将字节数组b中长度为b.length个字节的数据写入;
>void wirte(byte b[] , int off , intlen):将b中下标off开始的长度为len个字节的数据写入输出流。
>flush():刷新输出流;
>close():关闭当前的输出流,同时释放相关的系统资源。
2)、FileInputStream类
FileInputStream类继承了InputStream类,它重写的父类中的所有方法。FileInputStream类用于进行文件的输入处理,其数据源和接受器都是文件。FileInputStream类的两个常用的构造函数为:
FileInputStream(StringfilePath)和FileInputStream(File fileObj)
下面的实例详细讲解了read方法:
public classmytest01 {
public static void main(String[] args) {
try {
//创建一个FileInputStream对象
FileInputStream file = newFileInputStream("D:\\桌面\\安卓开发工具\\学习笔记\\test.txt");
while (file.available() > 0){
//调用read方法
System.err.println((char)file.read());
}
file.close();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}