资讯专栏INFORMATION COLUMN

Java IO框架总揽--FileInputStream源码解读

894974231 / 3327人阅读

摘要:是从文件系统中的文件中获取字节,至于什么文件,取决于主机环境,用于读取原始字节流,如图像数据,假如想要读取字符类型流,请使用。跳过个字节本地方法关闭文件输入流

   FileInputStream是从文件系统中的文件中获取字节,至于什么文件,取决于主机环境,FileInputStream用于读取原始字节流,如图像数据,假如想要读取字符类型流,请使用FileReader。
   
   FileInputStream是继承于InputStream,首先FileInputStream有三个构造函数;分别是

FileInputStream(File file) // 构造函数1:创建“File对象”对应的“文件输入流”
FileInputStream(FileDescriptor fd) // 构造函数2:创建“文件描述符”对应的“文件输入流”
FileInputStream(String path) // 构造函数3:创建“文件(路径为path)”对应的“文件输入流”

  用法:

 总结:通过这三种构造函数可以FileInputStream(FileDescriptor fd)是和通过构造函数1和构造函数3获得的实例是同一个实例。

public int read() //从此输入流中读取一个数据字节
public int read(byte b[]) //从此输入流中读取多个字节到byte数组中
public int read(byte b[], int off, int len) //从此输入流中读取最多len个字节到byte数组中

测试read()


代码实现中很简单,一个try中调用本地native的read0()方法,直接从文件输入流中读取一个字节

测试read(byte b[])


代码实现也是比较简单的,也是一个try中调用本地native的readBytes()方法,直接从文件输入流中读取最多b.length个字节到byte数组b中

测试 read(byte b[], int off, int len)


代码实现和 int read(byte b[])方法 一样,直接从文件输入流中读取最多len个字节到byte数组b中。

int available() // 返回“剩余的可读取的字节数”或者“skip的字节数” 一个本地的方法


根据这个方法,可以有效的创建byte[]数组实例,实现最大化利用内存空间,在Java的世界里,一个中文占3个字节,一个中文标题符号,同样也是占有3个字节。

long skip(long byteCount) // 跳过byteCount个字节 本地方法

void close()// 关闭“文件输入流”

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71886.html

相关文章

  • Java IO框架总揽--FileOutputStream源码解读

    摘要:是继承与的子类常用属性文件描述符是否在文件尾部开始追加写入用于读写映射操作文件的通道文件的路径一个关闭锁,只在方法中使用,确保多线程同步调用构造函数创建一个向指定对应的文件中写入数据的文件输出流创建一个向指定对应的文件中写入数据的文件输出流 FileOutputStream 是继承与OutputStream的子类 1 常用属性 private final FileDescriptor...

    warmcheng 评论0 收藏0
  • Java IO框架总揽--File源码解读

    摘要:直接继承与,实现了接口和接口,实现接口,意味着对象支持序列化操作,而实现接口,意味着之间可以比较大小。删除此抽象路径名表示的文件或目录。标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 showImg(https://segmentfault.com/img/bVbi3ls?w=2048&h=164);1 File直接继承与Object,实现了Serializable接口和C...

    rubyshen 评论0 收藏0
  • Java IO框架总揽--ObjectInputStream& ObjectOutputSt

    摘要:与的作用是对基本数据和对象进行序列化操作进行支持。如果检测到反序列化的类的和对象二进制流的不同,则会抛出异常。 ObjectInputStream与ObjectOutputStream的作用是:对基本数据和对象进行序列化操作进行支持。其中ObjectInputStream对象提供对基本数据和对象对持久存储,当我们需要读取这些存储这些基本数据或对象时,可以创建文件输入流对应的Object...

    philadelphia 评论0 收藏0
  • Java IO框架总揽--序列化

    摘要:序列化提供的一种对象序列化的机制,在该机制中,一个对象可以被表示为一个字节序列,该字节序列包括对象的数据有关对象的类型的信息和存储在对象中的数据类型。类和是高程次的数据流,他们包含序列化和反序列化对象的方法。 序列化:Java提供的一种对象序列化的机制,在该机制中,一个对象可以被表示为一个字节序列,该字节序列包括对象的数据、有关对象的类型的信息、和存储在对象中的数据类型。 反序列化:将...

    codercao 评论0 收藏0
  • 从设计者的角度理解Java IO

    摘要:通过多个装饰类实现责任链模式,它将对一个输入流的不同处理分散到不同的中去。 1、基本概念 1.1、InputStream 最基本的字节输入流,抽象类,定义了读取原始字节的所有基本方法1.1.1、public abstract int read() throws IOException 读取一个字节的方法,最基础的方法1.1.2、public int read(byte b[], in...

    Flink_China 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<