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类相关推荐
- 字节流与字符流(FileInputStream类和FileOutputStream类)
FileInputStream类和FileOutputStream类中,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流.例如: FileInputSte ...
- Java FileInputStream类
文章目录 总结 FileInputStream类数据结构 FileInputStream类方法 FileInputStream类构造方法 FileInputStream类操作方法 总结 FileInp ...
- 应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上
应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上. package p1;import java.io.*; public class FI ...
- 字节输入流_InputStream类FileInputStream类介绍
package com.learn.demo02.InputStream;import java.io.FileInputStream; import java.io.IOException;/*ja ...
- java 读取1m文件_java的FileInputStream类读取文件
package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...
- FileOutputStream 类 和 FileInputStream类的简单介绍,附代码演示。以及一个复制媒体文件的小程序。
一.FileOutputStream类. 构造函数:FileOutputStream fos = new FileOutputStream(String fileName);//参数为相关联的文件路径 ...
- 文件字节流(FileInputStream/FileOutputStream)
IO流操作分为四步核心步骤: 1.创建源 2.选择流 3.具体操作 4.释放资源(系统资源) 一.文件字节输入流(FileInputStream) 文件输入流(FileInputStream),顾名思 ...
- java怎吗从磁盘读文件_编写一个Java应用程序,该程序使用FileInputStream类,实现从磁盘读取本应用程序源代码文件,并将文件内容显示在屏幕上。...
满意答案 x78674181 2013.05.10 采纳率:42% 等级:12 已帮助:14476人 import java.io.FileInputStream; import java.io ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
最新文章
- 置换 ---- 两个置换最少swap次数 E. Permutation Shift
- Vue简单用法目录总结 以及 前端基础总结传送门:
- 线程A向队列Q中不停写入数据,线程B从列队Q中不停读取数据(只要Q中有数据)。
- 78、VLAN间路由配置实验之单臂路由
- 寄存器---汇编学习笔记
- PHPStorm配置使用SFTP
- Android单元测试 - Sqlite、SharedPreference、Assets、文件操作 怎么测?
- matlab在输电线路故障测距中应用,Matlab在输电线路故障测距中的应用
- 官方固件库V1.4版本介绍
- 优化算法 - 遗传算法
- 每月碎碎念 | 2019.10
- 转行学习java自学好还是去培训学校学习好?系统学习路线推荐
- linux - glib使用
- 雷电模拟器通过命令行设置分辨率及其他命令
- 南京审计大学计算机考研专业课答案
- ajax的跨域和请求——详解
- 用标签打印软件制作矢量格式的条码
- 向国外发送邮件用什么邮箱?
- linux more 乱码,Linux 中vim/more/cat/tail/head 命令查看文件显示乱码
- 软件测试-offer选择,自研or外包
热门文章
- Java中的集合浅析
- php 字符串转换时间_php 字符串怎么转化为时间
- oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...
- 虚拟机VirtualBox安装ArchLinux(中)
- mui中的mui.plusReady
- 假期出游,你会“鸽”酒店吗?AI 早已看穿一切
- 从入门到精通学全套AI 轻松掌握illustrator基础加实战技能视频课程-王诚-专题视频课程...
- 洛谷试题: 采药 解法
- setTimeOut的使用(防抖)
- Ubuntu16.04 NVIDIA 显卡找不到