Day16_92_Java IO 基础概念
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 基础概念的更多相关文章
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- Java面试题精选(一)基础概念和面向对象
-- 基础概念和面向对象 -- 全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见: 基础概念部分 ★★ : 常出现的高频率单词的区别理解(异常. ...
- 分布式强化学习基础概念(Distributional RL )
分布式强化学习基础概念(Distributional RL) from: https://mtomassoli.github.io/2017/12/08/distributional_rl/ 1. Q ...
- 一步步Cobol 400 上手自学入门教程01 - 基础概念
先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 System-names Reserved words 关键字 2.用户定义字符User-defin ...
- 【spring揭秘】1、关于IOC的基础概念
1.基础概念 IOC有三种注入方式: 1.构造方法注入,就是通过构造方法进行实例化成员属性对象,优点是实现对象之后直接就可以使用,但是参数过多也是个麻烦 2.setter方法注入,实现相应的sette ...
- 第214天:Angular 基础概念
一.Angular 简介 1. 什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多 ...
- ELK&ElasticSearch5.1基础概念及配置文件详解【转】
1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...
- Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 —— IIC总线 ,下面回顾下 IIC 基础概念 一.IIC 基础概念 IIC(Inter-Integrated Ci ...
- nginx架构与基础概念
1 Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...
随机推荐
- js中函数调用时,对参数个数和类型没有要求
因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java一样对其传入参数的类型进行定,也对传入参数的个数没有要求. js函数的参数与大多数其他语 ...
- 一个基于 Vue3 的开源项目,3个月时间 star 终于破千!
本文主要是对如何做开源项目的一些思考. 前文回顾: <Vue3 来了,Vue3 开源商城项目重构计划正式启动!> <一个基于 Vue 3 + Vant 3 的开源商城项目> 关 ...
- RabbitMQ初步使用,简洁介绍。
RabbitMQ是一种越来越流行的开源,快速消息代理,它使用Erlang编写并基于Open Telecom Platform框架构建.它实现了高级消息队列协议(AMQP),用于在进程,应用程序和服务器 ...
- Java 基础加强 02
基础加强·反射 和 枚举 类的加载概述和加载时机 * A:类的加载概述 * 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化来实现对这个类的初始化 * 加载 * 就是指 ...
- 过多if - else 的问题, 以及策略模式 + 反射解决方法
策略模式解决if - else 的代码 业务场景: 外包企业的审批人需要审批打卡的场景: 审批人分为多种不同的级别,多种级别中具有方式相同但是内容不同的操作:审批. 原来场景: 有前端传来审批人参数, ...
- 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门
第1章 Selenium自动化测试框架入门 1.1 Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...
- 写了一个 gorm 乐观锁插件
前言 最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常. 所以自然就想到了乐观锁的解决方案. 实现 乐观锁的实现比较简单,相信大部分有数据库使用 ...
- Spring基于XML的IoC
Maven导入Spring依赖 <dependency> <groupId>org.springframework</groupId> <artifactId ...
- C语言函数调用完整过程
C语言函数调用详细过程 函数调用是步骤如下: 按照调用约定传参 调用约定是调用方(Caller)和被调方(Callee)之间按相关标准 对函数的某些行为做出是商议,其中包括下面内容: 传参顺序:是从左 ...
- c/s应用程序自动更新组件GeneralUpdate3.2.1发布
一.组件简介 GeneralUpdate是基于.net standard 开发的一款(c/s应用)自动升级程序.该组件将更新的核心部分抽离出来方便应用于多种项目当中目前适用于wpf,控制台应用,win ...