java.io.FileInputStream 类是文件输入流,从文件中读取字节。
构造方法
FileInputStream(File file) :
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系
统中的 File对象 fifile命名。
FileInputStream(String name) :
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件
系统中的路径名 name命名。
当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出 FileNotFoundException 。
构造举例,代码如下
public class FileInputStreamConstructor throws IOException{
public static void main(String[] args) {
// 使用File对象创建流对象
File file = new File("a.txt");
FileInputStream fos = new FileInputStream(file);
// 使用文件名称创建流对象
FileInputStream fos = new FileInputStream("b.txt");
}
}
读取字节数据
1. 读取字节: read 方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回 -1 ,代码使
用演示:
public class FISRead {
public static void main(String[] args) throws IOException{
// 使用文件名称创建流对象
FileInputStream fis = new FileInputStream("read.txt");
// 读取数据,返回一个字节
int read = fis.read();
System.out.println((char) read);
read = fis.read();
System.out.println((char) read);
read = fis.read();
System.out.println((char) read);
read = fis.read();
System.out.println((char) read);
read = fis.read();
System.out.println((char) read);
// 读取到末尾,返回‐1
read = fis.read();
System.out.println( read);
// 关闭资源
fis.close();
}
}
输出结果:
a
b
c
d
e
‐1
循环改进读取方式,代码使用演示:
public class FISRead {
public static void main(String[] args) throws IOException{
        // 使用文件名称创建流对象
        FileInputStream fis = new FileInputStream("read.txt");
        // 定义变量,保存数据
        int b ;
        // 循环读取
        while ((b = fis.read())!=‐1) {
        System.out.println((char)b);
}
        // 关闭资源
        fis.close();
}
}
输出结果:
a
b
c
d
e
1. 虽然读取了一个字节,但是会自动提升为int类型。
2. 流操作完毕后,必须释放系统资源,调用close方法,千万记得
2. 使用字节数组读取: read(byte[] b) ,每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读
取到末尾时,返回 -1 ,代码使用演示:
public class FISRead {
public static void main(String[] args) throws IOException{
// 使用文件名称创建流对象.
FileInputStream fis = new FileInputStream("read.txt"); // 文件中为abcde
// 定义变量,作为有效个数
int len ;
// 定义字节数组,作为装字节数据的容器
byte[] b = new byte[2];
// 循环读取
while (( len= fis.read(b))!=‐1) {
// 每次读取后,把数组变成字符串打印
System.out.println(new String(b));
}
// 关闭资源
fis.close();
}
}
输出结果:
ab
cd
ed
错误数据 d ,是由于最后一次读取时,只读取一个字节 e ,数组中,上次读取的数据没有被完全替换,所以要通
过 len ,获取有效的字节,代码使用演示
public class FISRead {
public static void main(String[] args) throws IOException{
// 使用文件名称创建流对象.
FileInputStream fis = new FileInputStream("read.txt"); // 文件中为abcde
// 定义变量,作为有效个数
int len ;
// 定义字节数组,作为装字节数据的容器
byte[] b = new byte[2];
// 循环读取
while (( len= fis.read(b))!=‐1) {
// 每次读取后,把数组的有效字节部分,变成字符串打印
System.out.println(new String(b,0,len));// len 每次读取的有效字节个数
}
// 关闭资源
fis.close();
}
}
输出结果:
ab
cd
e
使用数组读取,每次读取多个字节,减少了系统间的IO操作次数,从而提高了读写的效率,建议开发中使
用。

字节流 FileInputStream类相关推荐

  1. 字节流与字符流(FileInputStream类和FileOutputStream类)

    FileInputStream类和FileOutputStream类中,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流.例如: FileInputSte ...

  2. Java FileInputStream类

    文章目录 总结 FileInputStream类数据结构 FileInputStream类方法 FileInputStream类构造方法 FileInputStream类操作方法 总结 FileInp ...

  3. 应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上

    应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上. package p1;import java.io.*; public class FI ...

  4. 字节输入流_InputStream类FileInputStream类介绍

    package com.learn.demo02.InputStream;import java.io.FileInputStream; import java.io.IOException;/*ja ...

  5. java 读取1m文件_java的FileInputStream类读取文件

    package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  6. FileOutputStream 类 和 FileInputStream类的简单介绍,附代码演示。以及一个复制媒体文件的小程序。

    一.FileOutputStream类. 构造函数:FileOutputStream fos = new FileOutputStream(String fileName);//参数为相关联的文件路径 ...

  7. 文件字节流(FileInputStream/FileOutputStream)

    IO流操作分为四步核心步骤: 1.创建源 2.选择流 3.具体操作 4.释放资源(系统资源) 一.文件字节输入流(FileInputStream) 文件输入流(FileInputStream),顾名思 ...

  8. java怎吗从磁盘读文件_编写一个Java应用程序,该程序使用FileInputStream类,实现从磁盘读取本应用程序源代码文件,并将文件内容显示在屏幕上。...

    满意答案 x78674181 2013.05.10 采纳率:42%    等级:12 已帮助:14476人 import java.io.FileInputStream; import java.io ...

  9. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

最新文章

  1. 置换 ---- 两个置换最少swap次数 E. Permutation Shift
  2. Vue简单用法目录总结 以及 前端基础总结传送门:
  3. 线程A向队列Q中不停写入数据,线程B从列队Q中不停读取数据(只要Q中有数据)。
  4. 78、VLAN间路由配置实验之单臂路由
  5. 寄存器---汇编学习笔记
  6. PHPStorm配置使用SFTP
  7. Android单元测试 - Sqlite、SharedPreference、Assets、文件操作 怎么测?
  8. matlab在输电线路故障测距中应用,Matlab在输电线路故障测距中的应用
  9. 官方固件库V1.4版本介绍
  10. 优化算法 - 遗传算法
  11. 每月碎碎念 | 2019.10
  12. 转行学习java自学好还是去培训学校学习好?系统学习路线推荐
  13. linux - glib使用
  14. 雷电模拟器通过命令行设置分辨率及其他命令
  15. 南京审计大学计算机考研专业课答案
  16. ajax的跨域和请求——详解
  17. 用标签打印软件制作矢量格式的条码
  18. 向国外发送邮件用什么邮箱?
  19. linux more 乱码,Linux 中vim/more/cat/tail/head 命令查看文件显示乱码
  20. 软件测试-offer选择,自研or外包

热门文章

  1. Java中的集合浅析
  2. php 字符串转换时间_php 字符串怎么转化为时间
  3. oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...
  4. 虚拟机VirtualBox安装ArchLinux(中)
  5. mui中的mui.plusReady
  6. 假期出游,你会“鸽”酒店吗?AI 早已看穿一切
  7. 从入门到精通学全套AI 轻松掌握illustrator基础加实战技能视频课程-王诚-专题视频课程...
  8. 洛谷试题: 采药 解法
  9. setTimeOut的使用(防抖)
  10. Ubuntu16.04 NVIDIA 显卡找不到