InputStream:字节输入流
- InputStream抽象类是所有类字节输入流的超类(父类)
- InputStream常用的子类
- FilelnputStream:文件输入流
- BufferedInputStream:缓冲字节输入流
- ObjectlnputStream:对象字节输入流
FilelnputStream应用实例
需求:
请使用FilelnputStream 读取hello.txt 文件,并将文件内容显示到控制台实现:
```java package test;
import org.junit.Test; import java.io.FileInputStream; import java.io.IOException; /**
演示FileInputStream的使用(字节输入流 文件—> 程序) */ public class Main { public static void main(String[] args) {
Main main = new Main();
main.readFile01();
System.out.println("\n============");
main.readFile02();
}
/**
- 演示读取文件…
- 单个字节的读取,效率比较低
-> 使用 read(byte[] b) */ @Test public void readFile01() { String filePath = “D:\hello.txt”; int readData = 0; FileInputStream fileInputStream = null;//放到try块的外边,扩大作用域 try {
//创建 FileInputStream 对象,用于读取 文件
fileInputStream = new FileInputStream(filePath);
//从该输入流读取一个字节的数据。 如果没有输入可用,此方法将阻止。
//如果返回-1 , 表示读取完毕
while ((readData = fileInputStream.read()) != -1) {
//读取中文会乱码
System.out.print((char)readData);//转成char显示
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭文件流,释放资源.
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
使用 read(byte[] b) 读取文件,提高效率 */ @Test public void readFile02() { String filePath = “D:\hello.txt”; //字节数组 byte[] buf = new byte[8]; //一次读取8个字节. int readLen = 0; FileInputStream fileInputStream = null; try {
//创建 FileInputStream 对象,用于读取 文件
fileInputStream = new FileInputStream(filePath);
//从该输入流读取最多b.length字节的数据到字节数组。 此方法将阻塞,直到某些输入可用。
//如果返回-1 , 表示读取完毕
//如果读取正常, 返回实际读取的字节数
while ((readLen = fileInputStream.read(buf)) != -1) {
System.out.print(new String(buf, 0, readLen));//显示
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭文件流,释放资源.
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} } ```