最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
作用:查看当前输入流中还存在多少可读数据,read()一次就要少一个
参数:无
返回值:当前输入流中可读数据字节长度 0表示没有啦
下面我们进入代码演示
package test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class changeData {
private static InputStream mIn;
public static void main(String[] args) {
try {
//第一步,获取文件输入流 FileInputStream 是 InputStream 的子类
mIn = new FileInputStream(“src/test.txt”);
for (;😉{//循环读取数据
//第二步:一个字节一个字节的读
int n = mIn.read();
//第三步:数据读完后 n值为-1 跳出循环
if (n == -1) break;
//打印日志 观察结果
System.out.println(“读到的数据是 ->” + n + " 剩余数据字节长度 ->" + mIn.available());
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
//关闭 输入流 避免不必要的资源开销
mIn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
test.txt文本内容及打印结果
缓冲
–
爱思考的同学肯定已经想到了,一个字节一个字节的读,读取速度很慢,所以下面我们讲一下 read()的两种重载方法。
InputStream.read(byte[] b):
作用:根据参数b的大小来读取数据
参数一:读取若干字节并填充到byte[]数组,
返回值:读取的字节数 返回 -1 表示没数据可读了
InputStream.read(byte[] b, int off, int len):
作用:根据参数b的大小来读取数据
参数一:偏移量 , 这个偏移量是对数组b来说的 即从数组b的第几个位置开始装数据
参数二:最大填充数 , 这个参数也是针对数组b来说的 即一口气装多少 , 也就是不管 b数组有多大,偏移量和最大填充数已经决定了 怎么装,装多少
返回值:读取的字节数 返回 -1 表示没数据可读了
package test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class changeData {
private static InputStream mIn;
public static void main(String[] args) {
try {
//规定缓冲区大小
byte[] buffer = new byte[4];
//第一步,获取文件输入流 FileInputStream 是 InputStream 的子类
mIn = new FileInputStream(“src/test.txt”);
for (;😉{//循环读取数据
//第二步,转入buffer中 从1号位置开始装,一口气装3个数据
int n = mIn.read(buffer,1,3);
// 第三步:数据读完后 n值为-1 跳出循环
if (n == -1) break;
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**