一、InputStream概述
InputStream是Java IO中用于读取字节流的抽象类。它是所有输入流的超类,可以从文件、网络、内存等任何来源中读取字节流。
InputStream中最常用的方法是read(),用于读取下一个字节,返回的是字节数据的整数值,如果已到达流的末尾,则返回-1。
二、InputStrem使用
使用InputStream读取文件数据需要以下步骤:
1、打开文件:使用InputStream打开指定文件。
2、读取数据:使用read()方法读取文件数据。
3、关闭文件:使用InputStrem关闭文件。
public class InputStreamExample {
public static void main(String[] args) {
try {
FileInputStream inputStream = new FileInputStream("test.txt");
int data;
while ((data = inputStream.read()) != -1) {
System.out.print((char) data);
}
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
三、缓冲流BufferedInputStream
InputStream每次只能读取一个字节,如果需要读取大量数据,则需要多次读取,效率低下。这时可以使用缓冲流BufferedInputStream,在InputStream的基础上增加了一个缓冲区,使得可以批量读取数据,提高了读取效率。
public class BufferedInputStreamExample {
public static void main(String[] args) {
try {
FileInputStream inputStream = new FileInputStream("test.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
int data;
while ((data = bufferedInputStream.read()) != -1) {
System.out.print((char) data);
}
bufferedInputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、字节数组InputStream
除了使用一个字节一个字节地读取文件数据,也可以直接将整个文件数据读入一个字节数组中,再进行处理。
public class ByteArrayInputExample {
public static void main(String[] args) {
String str = "Hello World!";
byte[] byteArray = str.getBytes();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
int data;
while ((data = byteArrayInputStream.read()) != -1) {
System.out.print((char) data);
}
byteArrayInputStream.close();
}
}
五、文件IO异常处理
在读取文件的过程中,可能会遇到文件不存在、无法访问、权限不够等异常。为了避免程序崩溃,需要对异常进行捕获和处理。
public class InputStreamEnsureExample {
public static void main(String[] args) {
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream("test.txt");
int data;
while ((data = inputStream.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
六、小结
Java InputStream提供了读取文件数据的基础功能,能够从文件、网络等不同来源中读取字节数据。使用InputStream读取文件数据需要遵循打开、读取、关闭的基本步骤,可以结合缓冲流BufferedInputStream、字节数组InputStream等进行批量读取数据,提高读取效率。同时在读取文件数据时需要处理可能出现的异常,并最终保证文件流的关闭。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154321.html
微信扫一扫
支付宝扫一扫