Java IO 基础概念

  • 流根据方向分为 输入流 和 输出流。 注意 : 输入和输出是相对与内存而言的,从内存出来就是输出,到内存中去就是输入。

  • 输入叫做 "读" , 输出叫做 "写"。

  • 输入流叫做 InputStream 或者 Read ; 输出流叫做 OutputStream 或者 Write。

  • 输入流是从文件读取数据,是一个拉取数据的过程; 输出流是将数据写入到文件中,是一个推送数据的过程。

  • 一个Java程序从本地读取(拉取)字节叫做字节输入流; 一个Java程序将字节数据写入并保存到硬盘中叫字节输出流; 从内存中读取字符文件叫字符输入流(Read), 输出字符数据叫字符输出流(write).

  • 流根据读取数据的方式不同分为 字节流 和 字符流,字节流是按照字节的方式读取的; 字符流是按照字符的方式读取的,一次读取两个字节,在java中一个字符占两个字节。

  • 字节流适合读取 视频、声音、图片等二进制文件; 字符流适合读取纯文本文件。

  • Java 语言中所有的字节流都以Stream结尾; 所有的字符流都含有Reader或Writer。

* IO继承结构图

    - 字节流

    - 字符流

  • 需要掌握的16个流

- java.io.*; import java.io.InputStream; 抽象类
import java.io.OutputStream; 抽象类 import java.io.FileInputStream; 字节流输入
import java.io.FileOutputStream; 字节流输出 import java.io.FilterInputStream;
import java.io.FilterOutputStream; import java.io.FileReader; 字符流输入
import java.io.FileWriter; 字符流输出 import java.io.BufferedInputStream; 带有缓冲区的字节流输入
import java.io.BufferedOutputStream; 带有缓冲区的字节流输出 import java.io.BufferedReader; 带有缓冲区的字符流输入
import java.io.BufferedWriter; 带有缓冲区的字符流输出 import java.io.DataInputStream; 读取数据
import java.io.DataOutputStream; import java.io.ObjectInputStream; 读取对象
import java.io.ObjectOutputStream; 转换流:
import java.io.InputStreamReader; 将字节输入流转换为字符输入流
import java.io.OutputStreamWriter; 将字节输出流转换为字符输出流 import java.io.PrintWriter;
import java.io.PrintStream; 标准的输出流,默认输出到控制台

Day16_92_Java IO 基础概念的更多相关文章

  1. JavaBean 基础概念、使用实例及代码分析

    JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...

  2. Java面试题精选(一)基础概念和面向对象

    --   基础概念和面向对象   --      全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见: 基础概念部分     ★★   : 常出现的高频率单词的区别理解(异常. ...

  3. 分布式强化学习基础概念(Distributional RL )

    分布式强化学习基础概念(Distributional RL) from: https://mtomassoli.github.io/2017/12/08/distributional_rl/ 1. Q ...

  4. 一步步Cobol 400 上手自学入门教程01 - 基础概念

    先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 ŸSystem-names ŸReserved words 关键字 2.用户定义字符User-defin ...

  5. 【spring揭秘】1、关于IOC的基础概念

    1.基础概念 IOC有三种注入方式: 1.构造方法注入,就是通过构造方法进行实例化成员属性对象,优点是实现对象之后直接就可以使用,但是参数过多也是个麻烦 2.setter方法注入,实现相应的sette ...

  6. 第214天:Angular 基础概念

    一.Angular 简介 1. 什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多 ...

  7. ELK&ElasticSearch5.1基础概念及配置文件详解【转】

    1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...

  8. Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

    关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 —— IIC总线 ,下面回顾下 IIC 基础概念 一.IIC 基础概念 IIC(Inter-Integrated Ci ...

  9. nginx架构与基础概念

    1       Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...

随机推荐

  1. 【不在混淆的C】指针函数、函数指针、回调函数

    一.指针函数 函数的返回值是指针类型. int* fun(int a,int b); 指针函数使用: 返回字符串 这里要注意,"1234567890abc"是字符串常量,*p指向的 ...

  2. Nginx(八): 观进程锁的实现

    前面的nginx系列讲解了nginx很多通用概念,流程,以及核心的http模块的一些实现.应该说大体上对nginx已经不再陌生和神秘. 今天我们不看全局,只看一个非常非常小的细节:nginx是多进程并 ...

  3. (嘎吧)--微软的 C# , IL,CLR, Cup 之间关系以及扩展联想

    还是啰嗦下:文章短并不代表文章质量不高.我最喜欢用干货性的以及总结性的语言 让大家明白文章要表达的内容.这一切,都是来自多年对.NET 的一些领悟以及一些理解. 不长篇大论,一本人也没时间,二本人也不 ...

  4. JavaFX桌面应用-版本升级

    好久没有写博客,2021年就以 "JavaFX桌面应用-版本升级" 开篇吧,记录一下JavaFX应用版本升级的开发流程. 桌面应用升级的方案应该很多,这里只是自己想到的方案. 1. ...

  5. virtualbox多个网卡添加(第5-8块儿)

    virtualbox多个网卡添加(第5-8块儿) virtualbox默认只能启用4块网卡,如果4块网卡不够则需要通过命令添加.最多可以增加至8块 创建一个文件run.bat,添加如下内容到文件中,然 ...

  6. 《C++ Primer》笔记 第2章 变量和基本类型

    如果你的数值超过了int表示范围,选用long long 如果你需要使用一个不大的整数,那么明确指定它的类型是signed char或者unsigned char 执行浮点数运算选用double 当一 ...

  7. Django 使用 pycharm 创建新的app(可以理解为模块)

    创建工程的时候,注意选择Existing interpreter 选择对应的 python 解释器,电脑如果安装有多个版本的 Python 的话,注意python版本的问题, 以上即是创建的项目目录, ...

  8. MySQL中如何查询中位数

    员工薪水中位数 题目描述: 预期答案: 解法1 既然是求解中位数,我们首先想到的是根据中位数的定义进行求解:奇数个数字时,中位数是中间的数字:偶数个数字时,中位数中间两个数的均值.本题不进行求解均值, ...

  9. 「UOJ 514」通用测评号(生成函数)

    首先,题目中的过程可以看作:每次选择任意一个燃料仓,给它装填 \(1\) 单位的燃料,如果此时恰好 "填满" 了它,就给答案 \(+1\). 考虑 \(n\) 号燃料仓填满的概率, ...

  10. python学习之web中的html基础

     HTML简介及相关标签介绍 首先,我们要了解什么是HTML? HTML被称作超文本标记语言,是一门标记语言,即该语言由各类标记标签组成. 为什么学python要学HTML? 不管学习哪个语言,我们最 ...