这是我的第一篇博客,纪念一下吧!

  最近学习了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(byte[]  b)     从该输入流读取最多b.length个字节的数据。

      int   read()          从该输入流读取最多b.length个字节的数据。

      void   close()         关闭此文件输入流并释放与流相关联的任何系统资源。

  3.代码
  

  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();
}
}
}
}
}

  最后再附上一张图和一篇很好的博客

  

  

      

  

    https://blog.csdn.net/jeryjeryjery/article/details/72236643

FileInputStream与FileOutputStream学习笔记的更多相关文章

  1. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  2. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

  3. 20145330第六周《Java学习笔记》

    20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...

  4. [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. Java-Eclipse插件开发学习笔记

    Eclipse插件 学习笔记 作者   Rick- Bao 开始日期  2014年8月26日 结束日期  2014年8月27日 一 . CVS(current version system) 版本控制 ...

  6. Hadoop学习笔记(5) ——编写HelloWorld(2)

    Hadoop学习笔记(5) ——编写HelloWorld(2) 前面我们写了一个Hadoop程序,并让它跑起来了.但想想不对啊,Hadoop不是有两块功能么,DFS和MapReduce.没错,上一节我 ...

  7. Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  8. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  9. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

随机推荐

  1. Adam

    Adam 方法 Adam 方法将惯性保持和环境感知这两个优点集于一身.一方面, Adam 记录梯度的一阶矩(first moment),即过往梯度与当前梯度的平均,这体现了惯性保持:另一方面,Adam ...

  2. Effectively bypassing kptr_restrict on Android

    墙外通道:http://bits-please.blogspot.com/2015/08/effectively-bypassing-kptrrestrict-on.html In this blog ...

  3. Quartz.NET的简单任务管理类

    昨天使用Quartz.NET做了个定时任务的功能,并实现了多个定时任务的功能 下面这个类实现了如下功能: 1.对定时任务进行管理 2.创建定时任务,需要给定时任务一个job的名称 3.判断给定的job ...

  4. Tomcat8源码笔记(二)Bootstrap启动

    TOMCAT源码调试入口是Bootstrap类的main方法,我的启动参数VM: -Dcatalina.home=E:/Tomcat_Source_Code/apache-tomcat-8.0.53- ...

  5. HashMap源码解读(JDK1.7)

    哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出 ...

  6. python数据类型之内置方法

    python有六大数据类型,分别为整型.字符串.列表.字典.元祖和集合,这些基本数据类型都内置了很多方法,接下来一一探寻. python中整型有两种:int和float 1 int 使用dir函数查看 ...

  7. 在 浏览器中调用外接设备— —手写板 【win10 x64 手动注册ocx控件的方法】

    PPAXSignToolSDK.ocx 浏览器下使用手写板时调用的控件,使用前必须先注册,,不然浏览器下版本无法正常工作. ocx 控件在安装包运行时会自动注册,如果安装包没有注册成功,需要进行手动注 ...

  8. EF 查询所有字段

    1简单方式 var query=db.StudentScore.Where(r=> r.SubjectId==subjectId).Select(g=>g).ToList(); 2 var ...

  9. 【转】Dubbo和JDK的SPI究竟有何区别?

    前言 上一篇简单的介绍了spi的基本一些概念,但是其实Dubbo对jdk的spi进行了一些改进,具体改进了什么,来看看文档的描述 JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初 ...

  10. 【IDEA&&Eclipse】3、IntelliJ IDEA 的 20 个代码自动完成的特性

    在这篇文章中,我想向您展示 IntelliJ IDEA 中最棒的 20 个代码自动完成的特性,可让 Java 编码变得更加高效.对任何集成开发环境来说,代码的自动完成都是最最重要的一项功能,它根据你输 ...