import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/*FileInputStreamTest 文件字节输入流 任何文件都可以采用这个流读取*/
/*字节输入流,是从硬盘向内存中读入*/
public class FileInputStreamTest {
public static void main(String[] args) {
/*为什么在这个地方声明? 为了方便将流关闭*/
FileInputStream fis =null;
try {
fis =new FileInputStream("E:\\IDEA\\Java\\StudentTwo\\src\\IOTest\\JavaTest.txt");
/*用字节数组,减少了内存和硬盘的交互,提高了运行效率
一次最多读取bytes.length个字节*/
byte[] bytes = new byte[4];
int readCount=0;
/*readCount是-1时,说明已经读完了*/
/* fis.read(bytes)的返回值是读取到的字节的数量,而且返回的是字节的ascll码*/
while((readCount= fis.read(bytes)) !=-1){
/*读到多少个,就转换输出多少个,不会出现重复读取的问题*/
System.out.println( new String(bytes,0,readCount));
/*String(byte[] bytes, int offset, int length)
构建了一种新的 String通过解码指定的字节数组使用平台的默认字符集。*/
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(fis !=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
下面是文件的内容以及路径
文章图片
程序最终结果:
文章图片
另外:FileInputStream类中其他比较重要的方法
①int available( ) 返回流中剩余的没有读到的字节数量
②long skip(long n ) 跳过几个字节
根据第一个方法,我们可以在小文件中使用,做到一次性读完小文件,但是大文件中就不适合
/*获取剩余没有读到的字节,其实在这里就是总字节*/
byte[] bytes = new byte[fis.available()];
int readCount = fis.read(bytes);
System.out.println(new String(bytes));
【JavaSE|Java中FileInputStream使用】
推荐阅读
- java|Kafka监控与指标解析-UnderReplicatedPartitions
- SSM|MyBatis和ORM的区别
- #|Mybatis——Mybatis表之间的关联关系和事务、缓存机制以及ORM
- 链表|手写一个泛型双向链表
- 资讯|一个 Python Bug 干倒了估值 1.6 亿美元的公司
- Java JDBC 入门(通过 JDBC 访问 MySQL)
- 计算机操作系统|《计算机操作系统-第四章》之进程
- 服务器|nginx网站服务
- 服务器|Linux系统安全及应用