java中的FileInputStream三种read()函数用法
作者:惟念依 发布时间:2021-10-27 23:01:21
标签:java,FileInputStream,read
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的依赖注入DI规范(起初以为是CDI规范,然后发现是D
- WebView是Android中一个非常实用的组件,它和Safai、Chrome一样都是基于Webkit网页渲染引擎,可以通过加载HTML数
- 首先,确保 IDEA 软件正确安装完成,Java 开发工具包 JDK 安装完成。IDEA 的 Java 项目 (Project) 则相当于
- merge结合include优化android布局,效果不知道,个人感觉使用上也有很大的局限,不过还是了解一下,记录下来。布局文件都要有根节
- 本文实例为大家分享了Android使用SoundPool播放音效的具体代码,供大家参考,具体内容如下SoundPool(int maxStr
- 本文实例讲述了Android模拟器实现手机添加文件到sd卡的方法。分享给大家供大家参考,具体如下:在DDMS中直接添加文件到模拟器sd卡如果
- 一、使用QueryByExampleExecutor1. 继承MongoRepositorypublic interface Student
- 前言在原生的 Android 或 iOS 中,都提供了基本的键值对存储方式,Android 是 SharedPreferences,iOS
- Dubbo过滤器概述Dubbo中的过滤器和Web应用中的过滤器的概念是一样的,提供了在服务调用前后插入自定义逻辑的途径。过滤器是整个Dubb
- 前言前面我们已经实现了服务的注册与发现(请戳:SpringCloud系列——Eureka 服务注册与发现),并且在注册中心注册了一个服务my
- 本文实例为大家分享了Java使用poi操作excel的具体代码,供大家参考,具体内容如下依赖poi的jar包,pom.xml配置如下:<
- 在使用C#进行相关编程的时候,有时候我们需要获取系统相关的进程信息。那么在C#中如何获取系统的所有进程那?下面请跟小编一起来操作。1、首先新
- yaml中的数组类型取值yaml中简单的风格,十分受大家的欢迎先说下简单的配置如何取值# application-dev.yml testV
- 策略模式的应用场景策略模式是否要使用,取决于业务场景是否符合,有没有必要。是否符合如果业务是处于不同的场景时,采取不同的处理方式的话,就满足
- 安装完 Android Studio 后启动,却报错如下:failed to create jvm error code -4这一般应是内存
- 先简单说一下思路:网络变化时系统会发出广播。所以我们监听这个广播,利用接口回调通知activity做相应的操作就好了。思路判断网络状态(写个
- 自定义TextView控件TimeTextView代码:import android.content.Context;import andr
- 1、如何解决服务之间的通信问题?[1]HTTP REST方式 使用http协议进行数据传递 json格式数据[2]RPC方式 远程过程调用
- java分别解析下面两个json字符串package jansonDemo;import com.alibaba.fastjson.JSON
- WebService是一种跨编程语言和跨操作系统平台的远程调用技术所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一