FileInputStream与FileOutputStream学习笔记
这是我的第一篇博客,纪念一下吧!
最近学习了IO流,想着学长说的话,就突然想要写写博客了,别管这是什么逻辑了,进入正题。
一.FileInputStream
1.概念
FileInputStream是Java语言中抽象类InputStream用来具体实现类的创建对象。FileInputStream可以从文件系统中的某个文件中获得输入字节,获取的文件可用性取决于主机环境。--百度百科
FileInputStream是节点流,是字节流
2.API文档
1)构造方法:
FileInputStream(File file) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名
FileInputStream(String name) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
2)常用方法:
int read() 从该输入流读取一个字节数据
int read() 从该输入流读取最多b.length个字节的数据。
void close() 关闭此文件输入流并释放与流相关联的任何系统资源。
1)从输入流中一个字节一个字节读取
public class IOTest2 {
public static void main(String[] args) {
//创建File类对象
File src = new File("abc.txt");
//多态
InputStream is = null;
try {
is = new FileInputStream(src);
//操作
int temp;
/*
* 返回的是读取到的一个字节数据对应的int值
* 返回值为-1时说明文件读取完毕
* */
while((temp=is.read()) != -1) {
//这里强制转换为char类型
System.out.print((char)temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2)将流中数据读取到字节数组中
public class IOTest3 {
public static void main(String[] args) {
//创建源
File src = new File("abc.txt");
//选择流
InputStream is = null;
try {
is = new FileInputStream(src);
byte[] buffer = new byte[5];
int len = -1;
/*从当前位置从输入流中读取b.length个字节的数据存放到flush中,
实际读取到的数据要看输入流中的字节数,
最多读取的数量就是flush.length,返回值为实际读取的字节数
*/
while((len = is.read(buffer)) != -1) {
//将输入流中的数据读取到flush容器中,从flush容器偏移量为0的地方开始,读取最多这么多个字节
//用得到的flush数组构造字符串,从flush数组偏移量为0处开始
String str = new String(buffer, 0, len); //len是当前flush的实际长度
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
注:这里解释一下偏移量的概念。就是假如我字节数组下标为0~10,现在偏移量为1,那么字节数据就是从字节数组下标为1的地方开始存放,同时要注意既然偏移了1个单位,那么字节数组可存放的数据个数就为10(1~10)个了
二、FileOutputStream
1.概念
文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流 -百度百科
2.API文档
1)构造方法:
FileOutputStream(File file) 创建文件输出流以写入由指定的 File对象表示的文件。
FileOutputStream(File file, boolean append) 创建文件输出流以写入由指定的 File对象表示的文件。(可追加写出)
FileOutputStream(String name) 创建文件输出流以指定的名称写入文件。
FileOutputStream(String name, boolean append) 创建文件输出流以指定名称写入文件
2)常用方法
void write(int b) 将指定字节写入到此文件输出流。
void write(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流。
void write(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量 off开始写入此文件输出流。
3.代码
public class IOTest4 {
public static void main(String[] args) {
File src = new File("nb.txt"); //文件不存在会自动创建
OutputStream os = null;
try {
//os = new FileOutputStream(src);
os = new FileOutputStream(src,true); //append标识,追加写入
//操作
String message = "change\r\n"; //写入的信息
byte[] data = message.getBytes(); //转换成字节数组(编码)
//将字节数组中的数据写入到输出流中
os.write(data, , data.length);
os.flush(); //写入后及时刷新流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
最后再附上一张图和一篇很好的博客

FileInputStream与FileOutputStream学习笔记的更多相关文章
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145213《Java程序设计学习笔记》第六周学习总结
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
- 20145330第六周《Java学习笔记》
20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...
- [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java-Eclipse插件开发学习笔记
Eclipse插件 学习笔记 作者 Rick- Bao 开始日期 2014年8月26日 结束日期 2014年8月27日 一 . CVS(current version system) 版本控制 ...
- Hadoop学习笔记(5) ——编写HelloWorld(2)
Hadoop学习笔记(5) ——编写HelloWorld(2) 前面我们写了一个Hadoop程序,并让它跑起来了.但想想不对啊,Hadoop不是有两块功能么,DFS和MapReduce.没错,上一节我 ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
随机推荐
- PHP常用的正则表达式(有些需要调整)
平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: "^\d+$" //非负整数(正整数 + 0) 顺平注: 验证输入id数值,不能为0 $reg1='/ ...
- elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
前言 刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击:老大的叮嘱.强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题.排查问题等, ...
- 菜鸟入门【ASP.NET Core】4:在CentOS上安装.NET Core运行时、部署到CentOS
下载.NET Core SDK 下载地址:https://www.microsoft.com/net/download/windows 第一步:Add the dotnet product feed( ...
- windows server 2008 R2 开启远程桌面
1.计算机 ——属性 2.远程设置 3.远程桌面-允许运行任意版本远程连接-选择用户-添加用户:Administrator;或是可以是其他非管理员用户(默认的系统管理员已经被授予了访问权限); 点确 ...
- 【WebSocket No.2】WebSocket和Socket实现聊天群发
介绍: 前面写过一篇简单的websocke实现服务端.这一篇就不在说什么基础的东西主要是来用实例说话,主要是讲一下实现单聊和群组聊天和所有群发的思路设计. 直接不懂的可以看一下上一篇简单版本再来看也行 ...
- Liquibase使用入门
1.LiquiBase简介 LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态.LiquiBase的主 ...
- Android基础系列合集
四大组件 1.Service Android四大组件-Service Android-远程Service Service 动态更新 UI 2.Activity Android四大组件-Activity ...
- Python3 系列之 编程规范篇
编码规范 编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入 #--coding:utf-8-- 标识 缩进 统一使用 4 个空格进行缩进 引号 自然语言 使用双引 ...
- UserControl VS TemplatedControl
一:首先来看一下UserControl 熟悉XAML的朋友们都知道,当我们创建一个用户控件的时候,VS会自动为我们生成一个XXX.xaml文件和XXX..xaml.cs文件,XAML文件用于进行控件的 ...
- linux 系统filezilla无法上传文件 553 Could not create
做网站过程中遇见了很多问题,解决了但是解决方法过一段时间就会遗忘,整理出来以便以后查看. 响应: 553 Could not create file.错误: 严重文件传输错误 解决方案: 一.必须将站 ...