文章目录

  • 一、InputStream
    • 1.关于文件的读
      • 1.直接读取
      • 2、文本读取
  • 二、OutputStream
    • 1、直接写入
    • 2、文本写入
    • 3、缓冲区

前面我们已经讲过了关于File类的一些常用的方法,对于文件系统,肯定少不了文件内容的输入与输出

一、InputStream

1.关于文件的读

分为两种方式:直接读取以及文本读取
不管是哪一种读取,都需要用到java.io.InputStream
表示输入流
InputStream本身是一个抽象类,我们在真正的使用中使用的是他的实现类 FileInputStream
对于文件的度,我么可以抽象成去水龙头上接水,我们需要准备一个容器,去接这些从水龙头流入的水

注意:在接水是由两种情况:1.当前有水 2.当前没水了,但是后面还会有水 3.当前没水,后面也不会有水。
在代码中,对于1.这种情况,直接返回一个大于零的数字,表示当前流出的水的数量 对于2 会返回0,表示当前没水了,但是后面还会有 对于
3返回一个 -1,表示当前没水,后满也不会再有水。

使用InputStream时,我们需要提前准备一个容器(通常为一个byte[])

1.直接读取

以二进制数据的方式读取,表现在代码中byte为单位
在使用读取时,我们使用InputStream实现类的read()方法
比如:在D:/IO目录下有一个world.txt文件,

我们要读取他的内容
a.一次读一个

b.一次读多个

这样的结果对于我们来说是没有意义的,因此我们需要的就是直接读取文本的内容

2、文本读取

所谓文本读取,就是我们拿到的内容就是文件原本的内容。
在读取时我们要注意文件原本的编码格式,以及后面我们在转义时的编码是否一致,如果不一致,有可能会出现乱码,文件内容无法识别等问题。
常用的编码规则有

在获取文件数据的基础上,我们可以利用Scanner类的方法将我们获取到的数据,根据编码规则进行转义,最终得到源文本的内容,但是前提是我们给定的编码规则要和源文本的编码规则一致
比如我们要读取D:/IO目录下的world.txt文件

我们可以看到他的编码规则是:UTF-8
接下来编写代码读取这个文件的内容
使用Scanner类的构造方法

我们可以看到,这样就将源文本的内容读到了

二、OutputStream

对于文件的写同样有两种情况,直接写入,按照原内容写入
在我们写入时,需要传入写入的文件路径,文件本身可以不存在(如果不存在就自动创建),但是他的祖先路径必须存在,在写入时,文件中原有的数据会被清除

1、直接写入

直接写入调用write()方法时,只能传入byte 或者 byte[]
我们直接往D:/IO/world.txt文件中写入“a”
此时world.txt已经存在

下面我们用直接写入方式编写代码

这样的输入肯定是非常不方便的

2、文本写入

下面有两种常用的写入方式
均向world.txt写入 “你好中国”

3、缓冲区

注意:在文件写入时,内存的读写速度远远高于硬盘的读写速度,因此,有一个缓冲区,数据先写入缓冲区,当(1、缓冲区满或达到一定的阈值 2、过了一段时间 3、进程主动刷盘),缓冲区的数据再写入硬盘,为防止缓冲区有遗留数据未刷入硬盘中,再写数据的最后,我们应手动调用flush()方法手动刷盘

InputStream/OutputStream(文件的输入输出)相关推荐

  1. 字节流InputStream/OutputStream

    字节流InputStream/OutputStream 本篇将对JAVA I/O流中的字节流InputStream/OutputStream做个简单的概括: 总得来说,每个字节流类都有一个对应的用途, ...

  2. File 和 InputStream, OutputStream 的用法

    一.File 首先我们要先了解文件路径: 文件路径分为 绝对路径 和 相对路径 两种. 绝对路径:相对于树来说就是,从根节点到叶子结点的整个路径.windows即是从各个磁盘              ...

  3. java 文件的输入输出

    一.File 属性 Java.io包,但不是InputStream,OutputStream的子类 创建File对象 1. FIle name = new File(String path) 2. F ...

  4. java使用inputStream_Java使用InputStream读写文件

    可以使用Java中的Reader或Stream读取文件.Reader非常适合用于文本数据,但是要使用二进制数据,应该使用Stream.FileInputStream用于打开流以从文件中读取数据.这里我 ...

  5. Python核心编程读笔 8: 文件和输入输出

    第九章 文件和输入输出 一.文件内建函数.方法.属性 1 文件内建函数 file_object = open(file_name, access_mode='r', buffering=-1) 工厂函 ...

  6. 输入文件c语言程序,C语言程序设计 对文件的输入输出.ppt

    C语言程序设计 对文件的输入输出 * * * * * * * * * * * * * * * * * * while ((c=getchar( ))!=EOF) /*键盘文件结束标志:输入Ctrl+z ...

  7. java流与文件——文本输入输出

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--文本输入输出 的相关知识: 0.2) 在保存数据时,可以选择是二进制还是文本格式: 在 ...

  8. [ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式...

    ACM中巧用文件的输入输出来改写acm程序的输入输出 经常有见大神们使用文件来代替ACM程序中的IO,尤其是当程序IO比较复杂时,可以使自己能够更专注于代码的测试,而不是怎样敲输入. C/C++代码中 ...

  9. C++ 标准函数库 —— 文件的输入输出 (Input/Output with files)

    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...

最新文章

  1. 如何克服实施OKR的阻力?
  2. 解决Windows7 Embedded连接手机问题
  3. 论文目录用word怎么自动生成或插入?
  4. Ashby diagram
  5. android热修复原理底层替换,Android 热修复 - 各框架原理学习及对比
  6. 卸载idea2020删除以前的配置_推荐一款只有5M大小的绿色良心的卸载工具!
  7. php背景图片透明度,css如何使用opacity属性给背景图片加透明度(代码)
  8. catch Floating point expection
  9. 【恋上数据结构】插入排序及二分搜索优化
  10. 微信表情图像代表什么意思_电表型号怎么选 型号字母都代表什么意思
  11. BP神经网络——如何进行权值的初始化
  12. python 进程池pool
  13. Python机器登陆新浪微博代码示例
  14. gamma分布_深度学习需要掌握的 13 个概率分布(含代码)
  15. java控制html弹出框,Selenium+java - 弹出框处理
  16. 第八章-数据处理的两个基本问题
  17. linux 命令行浏览网页
  18. 启动mongodb数据库服务
  19. android sharedpreferences 存储对象,android中SharedPreferences实现存储用户名功能
  20. 开机后黑屏看不到桌面_开机后黑屏看不到桌面怎么解决

热门文章

  1. 基于最小均值 (LMF) 和最小均方 (LMS) 算法进行系统识别附matlab代码
  2. DFT中常用英文缩写,词汇及详解(每日持续更新)
  3. ARM GICv3 GIC代码分析
  4. 算法导论 直接寻址表
  5. js计算时间差(相差多少分钟)(时分)
  6. JDBC链接中的问题
  7. EOS智能合约开发系列(一)
  8. python导入scipy库、sympy库遇到的问题及解决方式
  9. http请求中文字符加解密
  10. 常见的挖矿程序处理方式