@

总结内容

1. IO流是什么

IO流也叫输入输出流

输入流:将数据以字符或字节的方式从外部的存储空间读取到程序中,例如把音频、文档、视频等读取到内存中,所以IO输入流也分为输入字节流和输入字符流;

输出流:将数据以字符或字节的方式从程序中写出到外部磁盘中,IO输出流分为输出字节流和输出字符流。

2. 字符流和字节流

  • IO流按数据格式划分,可分为字符流和字节流

    1)字节流:可用操作任意数据,因为计算机中任何数据都是以字节流的形式处理的,一般用户用字节流处理视屏、音频、图片等,字节流处理纯文本比较慢;

    2)字符流:字符流操作纯文本的数据比较方便。

  • 字节流和字符流的区别

    1)字节流:在操作时本身不会用到缓冲区(内存),是文件本身直接操作的;

    2)字符流:在操作时使用了缓冲区,通过缓冲区再操作文件。

  • 缓冲区的概念

    某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低;

    为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。

3. File常用API(前面类型为返回类型)

  • 判断

    1)boolean exists():判断文件是否存在

    2)boolean isFile() :是否是文件

    3)boolean isDirectory():判断是否是目录
  • 获取

    1)String getName():获取文件名称

    2)String getPath():获取文件路径

    3)String getAbsolutePath():获取绝对路径

    4)File getParentFile():获取上级目录文件
  • 创建删除

    1)boolean delete() :删除文件

    2)boolean mkdirs():创建当前目录和上级目录
  • 列表

    1)File[] listFiles() :列出所有文件对象

4. 编码转换

  • 常见的字符集

    ASCII:占一个字节,只能包含128个符号。不能表示汉字

    ISO-8859-1:也称之为latin-1,占一个字节,收录西欧语言,不能表示汉字

    GB2312/GBK/GB18030:占两个字节,支持中文

    UTF-8:是一种针对Unicode的可变长度字符编码,是Unicode的实现方式之一,支持中文,存储中文占3个字节(推荐使用)

  • 字符串转换:

    数据在网络上传输是以二进制的格式,二进制格式就是byte数组,此时需要把信息做编码和解码处理

    1)编码:把字符串转换为byte数组 String--->byte[]

    2)解码:把byte数组转换为字符串 byte[]--->String

    代码如下:

String aname = request.getParameter("name");
String name = new String(aname.getBytes("ISO-8859-1"),"UTF-8");

5. IO流实现流程

  • 1):创建源或者目标对象

    输入操作: 把文件中的数据流向到程序中,此时文件是源,程序是目标.

    输出操作: 把程序中的数据流向到文件中,此时文件是目标,程序是源.

  • 2):创建IO流对象:

    输入操作: 创建输入流对象.

    输出操作: 创建输出流对象.

  • 3):具体的IO操作.

    输入操作: 输入流对象的read方法.

    输出操作: 输出流对象的write方法.

  • 4):关闭资源(勿忘). 一旦资源关闭之后,就不能使用流对象了,否则报错.

    输入操作: 输入流对象.close();

    输出操作: 输出流对象.close();

  • 注意:

    1)四大抽象流是不能创建对象的,一般的我们根据不同的需求创建他们不同的子类对象,比如操作文件时就使用文件流。

    2)不管是什么流,操作完毕都必须调用close方法,释放资源。

6. 输入输出流简单实现

具体例子代码请看我下篇博文:这是博文链接

7. 输入输出流简单实现

  • close () : 关闭资源/释放资源。

    1)当我们new一个java流对象后,会产生实例对象,当没有引用指向的时候java垃圾收集器会按照相应的策略自动回收,但是却无法对系统资源进行释放。

    2)包装的流都会自动调用 被包装 的流的关闭方法,无需自己调用。

    3)后开启,先关闭。

    4)在关闭字符流时会强制性地将缓冲区中的内容进行输出。
  • flush (): 清空缓冲区数据,将数据强制写出

    1)读完数据 不代表 写完数据。如果直接close() 可能会导致部分数据丢失,所以关闭流前先flush()。

    注:如果程序没有flush() 或 close(),则缓冲区中的内容是无法输出的。

总结

以上就是对IO流第一天学习的总结了,代码仅供参考,欢迎讨论交流。

IO流入门的更多相关文章

  1. Java中的IO流 - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的IO流-入门篇>,希望对大家有帮助,谢谢 由于Java的IO类有很多,这就导致我刚开始学的时候,感觉很乱,每次用到都是上网搜,结果 ...

  2. java IO文件操作简单基础入门例子,IO流其实没那么难

    IO是JAVASE中非常重要的一块,是面向对象的完美体现,深入学习IO,你将可以领略到很多面向对象的思想.今天整理了一份适合初学者学习的简单例子,让大家可以更深刻的理解IO流的具体操作. 1.文件拷贝 ...

  3. Java入门之File类和IO流

    1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作 . 构造方法: public File(String pathname) :通过将 ...

  4. RandomAccessFile&IO流&排序&方法论

    RandomAccessFile&IO流&排序&方法论 我们总觉得历史是极其遥远的东西,与我们并无关联,又觉得历史隐藏在图书馆的旧书之中. 然而,我们每个人都有真真切切的历史. ...

  5. Java基础IO流(一)

    IO概念: 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等.在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象 ...

  6. Java IO 流总结篇

    1. 写在前面的话 I/O ,I 是 Input (输入)的缩写,O是Output (输出) 的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语. 人类如果想和 ...

  7. I-O流概念认知升级

    在文件操作基础入门中,我们提到了流的 概念,这篇我们将更多的介绍流这个东西,以及C的I/O相关知识 现在,我们从C程序员最熟悉的printf函数开始学习I/O流. 我们对printf函数一直是很喜爱的 ...

  8. JavaSE复习(四)File类与IO流

    File类 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例. public File(String parent ...

  9. 史上最骚最全最详细的IO流教程,没有之一!

    目录 1.告白IO流的四点明确 2.File类 1.1 File概述 1.2 构造方法 1.3 常用方法 1.3.1 获取功能的方法 1.3.2 绝对路径和相对路径 1.3.3判断功能的方法 1.3. ...

随机推荐

  1. 写给开发人员的实用密码学(三)—— MAC 与密钥派生函数 KDF

    目录 一.MAC 消息认证码 MAC 与哈希函数.数字签名的区别 MAC 的应用 1. 验证消息的真实性.完整性 2. AE 认证加密 - Authenticated encryption 3. 基于 ...

  2. tp 天气Vue参考

    <!DOCTYPE html> <html> <head> <title>Bootstrap 实例</title> <meta cha ...

  3. 一比一还原axios源码(二)—— 请求响应处理

    上一章,我们开发了一些简单的代码,这部分代码最最核心的一个方法就是buildURL,应对了把对象处理成query参数的方方面面.虽然我们现在可以发起简单的请求了,但是第一,我们无法接收到服务器的响应, ...

  4. (七)React Ant Design Pro + .Net5 WebApi:后端环境搭建-日志、异常处理

    一.日志 日志具有帮助开发者快速的定位问题,记录各种信息,配合其他分析框架使用等等功能,收集日志的各类框架如:Log4net.NLog.Exceptionless.Serilog等等,百度或园子里介绍 ...

  5. git error: unable to create file Invalid argument

    git error: unable to create file xxxx  Invalid argument 原因: mac  上创建的文件名里有冒号,这在windows 上是不允许的. 解决方式: ...

  6. Golang 基础之基础语法梳理 (三)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...

  7. GE PACSystems RX3i 输入验证漏洞

    受影响系统:General Electric CPE100 < R9.85General Electric CPE115 < R9.85General Electric CPE302 &l ...

  8. vue2.x版本中computed和watch的使用入门详解-watch篇

    前言 watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等 基本使用 在使用watch的时候,需要 ...

  9. ::before和:after中的的双冒号和单冒号有什么区别及这两个伪元素的作用

    ::before和:after中的的双冒号和单冒号有什么区别及这两个伪元素的作用 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素(伪元素由双冒号和伪元素名称组成),为了兼容已有的伪元素 ...

  10. Linux磁盘分区管理-LVM回顾

    LVM(逻辑分区管理)的几个概念:PV(物理卷),VG(卷组),LV(逻辑卷),PE(物理区域),LE(逻辑区域),其中PV, VG, LV 三者之间的关系如下图 : 物理存储介质:这里指系统的存储设 ...