java中的FileInputStream三种read()函数用法
作者:惟念依 时间:2021-10-27 23:01:21
FileInputStream流的三种read()函数对比
首先我们先创建FileIputStream流对文件进行读取
public static void main(String[] args) throws IOException {
//创建File对象,保存文件夹路径iu
File fin_floder = new File("C:\\test.txt");
//创建从文件读取数据的FileInputStream流
FileInputStream fin = new FileInputStream(fin_floder);
1. int read( )函数
该函数的返回值为int数值,表示读取的字符对应的ascii码,当返回为-1表示读取到文件末尾;
//顺序读取到文件末尾
int temp = 0;
while( (temp = fin.read()) != -1) {
System.out.print(temp+" "); //打印read()返回值
System.out.printf("%c",temp); //打印ascii码对应的字符
System.out.println();//换行
}
读取 hello,world 文本文档的结果:
2. read( byte [ ] )
返回读入缓冲区的字节总数,到末尾返回-1
int size = fin.available(); //返回文件的总字节数
byte[] b = new byte[size]; //生成缓存用于存放读入的字节
System.out.println(fin.read(b));
String str = new String(b); //将字节数组转化为字符串
System.out.println(str);
读取 hello,world 文本文档的结果:数值 11
3. read(byte[ ] ,int off ,int len)
off表示目标数组b中的起始偏移量,也就是从第几个下标开始写入数组,len表示写入数组的长度;
int size = fin.available();
byte[] b = new byte[size];
fin.read(b,2,5); //从数组的的第三个元素开始写入,写五个字节长度
String str = new String(b); //字节数组转化为字符串
System.out.println(str);
输出结果为:
FileInputStream中的read()方法
首先这是我自己写代码的时候遇到的一个问题,我思来想去,终于想通透了,所以想分享给大家,当然这也是一个非常简单的问题。
public class IO_InputStream
public static void main(String[] args){//需要导包的,图方便我就不写了
//1.new一个FileInputStream对象
FileInputStream fis = new FileInputStream("chifan.next)) ;
//例如这个文本里面我放了1234567共7个字符,下面开始读取文件
while(fis.read() != -1){
System.out.print( char)fis.read() ); //将read()方法调用后返回值为int类型强制转换为字符,以便打印
}
//但是打印结果就是:246,隔一个打印一个,我感到疑惑
//后来我左思右想发现我在while的执行语句块里面的打印方法又调用了一次read()方法,导致打印的其实是每次读取两个字符后,只会打印每两个的最后一个字符,如果我们在123456后面再一个7,那么最后打印的就是一个?如何解决呢?就是我们不要在执行语句块里面出现read()方法
int len;
while(len=fis.read() != -1){
System.out.print( char)len);
}
//这样结果就一致了
来源:https://blog.csdn.net/kendleo/article/details/105253030
标签:java,FileInputStream,read
0
投稿
猜你喜欢
java睡眠排序算法示例实现
2022-04-01 00:13:32
c#继承与多态使用示例
2021-11-24 16:48:33
android视频截屏&手机录屏实现代码
2022-12-10 15:20:31
android 通过MediaRecorder实现简单的录音示例
2023-07-29 06:03:54
Spring Cloud如何使用Feign构造多参数的请求
2023-11-03 00:18:31
MyBatis多对多关联映射创建示例
2023-08-09 06:40:10
springcloud配置ssh的问题及解决方法
2023-11-03 15:48:11
Android 实现签到足迹功能
2023-06-21 15:16:24
深入浅析Android坐标系统
2021-12-15 05:26:34
Java中的break和continue关键字的使用方法总结
2022-07-13 11:50:46
java中找不到符号的解决方案
2023-09-01 17:50:11
Android使用SharedPreferences存储数据的实现方法
2021-08-22 02:05:49
C#并发编程入门教程之概述
2022-08-08 09:44:23
Java 方法的定义与调用详解
2023-11-04 13:52:58
关于mybatis一对一查询一对多查询遇到的问题
2022-01-26 05:25:12
Spring Batch轻量级批处理框架实战
2023-01-08 00:24:23
Java服务假死之生产事故的排查与优化问题
2022-01-12 04:03:37
Android实现将一个Activity设置成窗口样式的方法
2023-07-04 18:56:38
Android闹钟机制实现定时任务功能
2021-08-06 07:36:03
Java SE求解汉诺塔问题的示例代码
2022-05-10 23:44:30