抽象类是所有的类表示字节输入流的父类
InputStream抽象类实现的类:
InputStream抽象类的所有方法
方法 | 说明 |
---|---|
int available() | 返回一个可以从这个输入流读取(或跳过)的字节数的估计值,而不阻塞该输入流的下一个方法的调用。 |
void close() | 关闭此输入流并释放与流关联的任何系统资源。 |
void mark(int readlimit) | 标记此输入流中的当前位置。 |
boolean markSupported() | 如果输入流的支持 mark和 reset方法。 |
abstract int read() | 从输入流读取下一个数据字节。 |
int read(byte[] b) | 读取一定数量的字节从输入流并存入缓冲区阵列 b。 |
int read(byte[] b, int off, int len) | 读到 len字节从输入流读入字节数组数据。 |
void reset() | 重新定位该流在时间的 mark方法的位置上呼吁这个输入流。 |
long skip(long n) | 跳过并丢弃 n字节从输入流中的数据。 |
IO的标准流程:
- 1.创建源
- 2.选择流
- 3.操作
- 4.释放资源
测试InputStream的实现类FileInputStream的字节流流程
调用无参read循环读取到文件结尾
package cn.yzy.io;
/*
* 测试字节流流程:
* 1.创建源
* 2.选择流
* 3.操作
* 4.释放资源
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class testInputStream_KnowFlow {
public static void main(String[] args) {
//创建源
File srcFile = new File("test.txt");
//选择流
InputStream inputStream = null;
try {
inputStream = new FileInputStream(srcFile);
//操作 read一次读一个字节
int tmp;
while((tmp=inputStream.read())!=-1) {
System.out.print((char)tmp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//释放资源
try {
if(null != inputStream) //创建流可能失败所以判断一下
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
调用有参read按段读取
package cn.yzy.io;
/*
* 测试字节流按段读取
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class testInputStream_KnowFlow2 {
public static void main(String[] args) {
//创建源
File srcFile = new File("test.txt");
//选择流
InputStream inputStream = null;
try {
inputStream = new FileInputStream(srcFile);
//按段读取
byte[] flush = new byte[1024*1];
int len = 0;
while((len=inputStream.read(flush))!=-1) {
String str = new String(flush, 0, len);
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//释放资源
try {
if(null != inputStream) //创建流可能失败所以判断一下
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}