Java--IO流部分内容

IO流部分的学习我认为是各类方法的集合使用,了解IO流并不难,就像之前学习Java内容里面的一些方法一样,只是他所对待的应用方向不同而已,下面我来轻谈IO流的部分知识及使用方法。
接下来我会通过几个部分来介绍IO流中的一些方法的使用
  1. 首先是IO流的入门知识,什么是IO流
    什么是IO流:
    IO Stream(input output Steam):输入输出流
    本质指的就是计算机中数据的流入和流出:
    从磁盘上将数据读入内存
    从内存中将数据写入到硬盘
    也就是说,从狭义上来说,我们一般IO流指的就是磁盘和内存之间的数据流动

    	但是从广义来说,不同电脑之间的数据流动,也是一种IO流,网络通信也是IO流(socket)
    
    在本地进程间的数据流动,就是狭义上的IO流
    在远程进程间的数据流动,也就是一种IO流(Socket)
    

java的IO流:
将底层的open函数进行了大量的封装,提供了大量好用的、符合各种场景的IO对象供大家使用
java.io包
InputStream类:字节输入流
OutputStream类:字节输出流

IO流的分类:
|-- 数据的流动方向
|-- 输入流 InputStream、Reader
|-- 输出流 OutputStream、Writer、Printer
|-- 根据的数据的类型
|-- 字节流 XxxxStream
|-- 字符类 Writer、Printer、Reader
|-- 根据作用
|-- 节点流
|-- 装饰流(过滤流)
|-- 转换流
转换字节流和字符流
2. File方法的使用
首先我们先来看帮助文档的解释:
请添加图片描述
而后我们来看代码是如何展示的,还有其中的很多方法,我就给大家看看这些方法,具体的还得让大家去尝试:请添加图片描述
请添加图片描述
可以看到file有很多种方法,其中也有些方法和Linux系统里面的命令很像,比如创建文件夹:file.mkdir(),这就很类似请添加图片描述
这是找的一些手稿摘抄资料,仅供参考

  1. 过滤器
    我们可以通过文件名后缀名来对文件筛选时进行过滤:
    请添加图片描述
    这就是用过滤器的使用方法,对后缀名为Java的文件进行过滤筛选

  2. 输入输出流
    本质是计算机中数据的流入和流出
    狭义上:从磁盘上将数据读入内存
    或从内从中将数据写入到硬盘内
    就是指磁盘和内存之间的数据流动
    广义上:不同电脑之间的数据流动,也是一种IO流,网络通信也是一种IO流,在远程进程的IO流(socket);
    Java的IO流将底层open函数进行了大量的封装,如Java.IO包
    InputStream类
    OutputStream类
    下面我们来看一看输出输出流的代码展示:
    我们以输入输出流中的fileOutputStream子类进行演示,其他的几个类都差不多:请添加图片描述
    请添加图片描述
    请添加图片描述
    这是代码展示,我就举这种方法的一个例子,其他的使用方法都是大同小异的,样式都是差不多的,使用应用场景会用所不同。

  3. IO流包中的子类
    请添加图片描述
    io包里面的类有很多子类运用,我就讲其中的一些类

  4. 数据流的使用
    请添加图片描述
    这是代码展示。
    数据流的使用:
    如果要保存数字,只要将数字转换为字符串,也就是说
    以字符流的形式保存数据,这样有时候并不是我们需要的,我们有时候就是
    需要以字节保存数据,因此就可以使用数据流来包装文件流完成。
    字符流:
    字符流就是以字符的形式传递数据的IO流
    电脑中,所有的数据都可以以字节的形式传递
    不是所有的数据都可以转换字符的!!!
    |-- InputStrean 输入字节流
    |-- OutputStream 输出字节流
    字符流
    |-- Reader
    |-- Writer
    注意:字符流是存在编码的!!!!

  5. 对象流
    请添加图片描述
    这有两个测试代码进行演示对象流的使用
    对象流:
    |-- ObjectInputStream
    对象输入流,从磁盘等保存介质中读取已经保存的对象数据
    |-- ObjectOutputStream
    将对象转换为数据,保存起来

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

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

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

对象持久化:
将对象保存起来
transient关键字:
该关键字是用来修饰属性,一旦某个属性被这个关键字修饰,
则该属性不会进行持久化,也就是该值不会保存!!!
请添加图片描述
这是进行对象系列化的样式

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

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

请添加图片描述
这是转换流的代码展示;
输出结果我就不展示了。

9.总结
对于IO流,内容还有很对很多,尤其是对于Java这种语言,对于IO流的延申是非常广泛非常深的,我这肯定是讲部完整,讲不仔细的,但我罗列出几种方式来对IO流的部分需要掌握的内容进行了展示和讲解,我们也应当多熟悉这几块内容。还有就是我们在写IO流的代码时,发现会有很多的异常处理,这都是很正常的,所以在今后的学习中我们在多适应这种代码的变换,也要多加熟悉不同代码的样式所带来的不同改变。而且对于流的使用一定是要关闭的,不然在运行中会占用内存,或出现一些其他的错误影响。
IO其实是相对容易的,我们要了解和熟悉其中的原理,还有多许多方法要进行熟悉掌握和运用,这样在以后的做项目当中我们才会游刃有余,内容比较多,我们慢慢积累。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值