IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java学习:IO流 -> 正文阅读

[Java知识库]java学习:IO流

IO流

什么是IO流:
IO Stream(input output Steam):输入输出流
本质指的就是计算机中数据的流入和流出:
从磁盘上将数据读入内存
从内存中将数据写入到硬盘
也就是说,从狭义上来说,我们一般IO流指的就是磁盘和内存之间的数据流动
但是从广义来说,不同电脑之间的数据流动,也是一种IO流,网络通信也是IO流(socket)
在本地进程间的数据流动,就是狭义上的IO流
在远程进程间的数据流动,也就是一种IO流(Socket)

|-- IO部分
|-- File对象
|-- IO的概念
|-- IO的分类
|-- 字节流
|-- InputStream 字节输入流父类
|-- OutputStream 字节输出流
|-- 过滤流(装饰流)
BufferedInputStream
BufferedOutputStream
|-- 数据流
DataInputStream
DataOutputStream
|-- 字符流
以字符串,肉眼可以直接识别,很小的空间,存储较多是文字数据
|-- Writer 字符输出流父类
|-- Reader 字符输入流父类

|-- 字符缓存流完成字符的操作
	通过行来读取和写入字符串
	|-- 字符串输入缓存流
		BufferedReader
	|-- 字符串输出缓存流
		BufferedWriter
		不太推荐大家使用BufferedWriter,因为需要手动添加换行符
		推荐使用打印输出流(节点流)
		PrintWriter
			|-- print()
			|-- println()

java的IO流

将底层的open函数进行了大量的封装,提供了大量好用的、符合各种场景的IO对象供大家使用
java.io包

InputStream类:字节输入流
OutputStream类:字节输出流

数据流的使用:

我们之前讲解的流,如果要保存数字,只要将数字转换为字符串,也就是说
以字符流的形式保存数据,这样有时候并不是我们需要的,我们有时候就是
需要以字节保存数据,因此就可以使用数据流来包装文件流完成。

字符流:

字符流就是以字符的形式传递数据的IO流

电脑中,所有的数据都可以以字节的形式传递
不是所有的数据都可以转换字符的!!!

|-- InputStrean		输入字节流
|-- OutputStream	输出字节流

字符流
|-- Reader
|-- Writer

注意:字符流是存在编码的!!!!

转换流:

能够实现字节流和字符流之间的转换
字符串对象:能够转换为字节数组或者字符数组

|-- InputStreamReader:将字节流转换为字符流操作
	一个字节流,如果可以转换为字符流,一般建议转换字符流操作,类似于BufferedReader
	readLine()方法,非常方便操作字符流
	但是需要注意两个问题:
		1、字符流存在着编码问题!!!
		2、有些字节是无法转换为字符流的(如图片、视频等流媒体文件)
|-- OutputStreamWriter:
	将字符流转换为字节流输出,好处就是可以使用字符流的好用的方法来处理字节流

对象流:

|-- ObjectInputStream
对象输入流,从磁盘等保存介质中读取已经保存的对象数据
|-- ObjectOutputStream
将对象转换为数据,保存起来

发现了问题:
	只能保存系统提供一些类的对象(如包装类、字符串等类)
	原因:java中要保存对象,该对象的类必须实现序列化接口!!!!



在java中,如果要保存对象,必须序列化该对象!!!

对象序列化:

序列化(串行化):将程序中的对象这种逻辑概念通过特定方式做成字节(字符)数据,以方便与保存或者传输

反序列化:将序列化后的数据重新还原为抽象的对象

对象持久化:

将对象保存起来

transient关键字:

该关键字是用来修饰属性,一旦某个属性被这个关键字修饰,
则该属性不会进行持久化,也就是该值不会保存!!!
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:06:43  更:2021-08-09 10:08:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 2:59:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码