io流

Java中的IO流(一)

本秂侑毒 提交于 2020-01-24 05:06:45
Java中的IO流(一): https://blog.csdn.net/Veer_c/article/details/103833045 Java中的IO流(二): https://blog.csdn.net/Veer_c/article/details/103833423 Java中的IO流(三): https://blog.csdn.net/Veer_c/article/details/103833811 IO流分类: IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 根据流向可分为:输入流、输出流 根据数据类型可分为: 字节流:字节输入流、字节输出流 字符流:字符输入流、字符输出流 注意:一般我们在讨论IO的分类时,默认是按照数据类型分的。 字节流: 字节输入流 InputStream(抽象类) 字节输出流 OutputStream(抽象类) 字符流: 字符输入流 Reader 字符输出流 Writer 需求:请用字节流往一个文本文件中写一句话:”helloworld”。 分析: 首先要知道是字节流,写数据我们就应该知道是字节输出流,所以最终选择了OutputStream,而OutputStream是抽象类,所以我们应该找其子类,文件这个单词是File,所以就大胆的猜测下

Java IO流学习总结

不羁岁月 提交于 2020-01-23 19:50:41
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流, 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。 输入流和输出流 对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。 Java IO流对象 1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出: InputStream 是所有的输入字节流的父类,它是一个抽象类。 ByteArrayInputStream、StringBufferInputStream、FileInputStream

Java IO流学习总结

╄→гoц情女王★ 提交于 2020-01-23 19:50:24
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流, 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。 输入流和输出流 对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。 Java IO流对象 1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出: InputStream 是所有的输入字节流的父类,它是一个抽象类。 ByteArrayInputStream、StringBufferInputStream、FileInputStream

Java IO流学习总结

孤人 提交于 2020-01-23 19:50:10
Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流, 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。 输入流和输出流 对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。 Java IO流对象 1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出: InputStream 是所有的输入字节流的父类,它是一个抽象类。 ByteArrayInputStream、StringBufferInputStream

Java IO流学习总结

ⅰ亾dé卋堺 提交于 2020-01-23 19:49:55
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。 输入流和输出流 对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。 Java IO流对象 1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出: InputStream 是所有的输入字节流的父类,它是一个抽象类。 ByteArrayInputStream、StringBufferInputStream、FileInputStream

IO流(0)

邮差的信 提交于 2020-01-23 19:49:08
所谓input/output,本质上就是将数据从buffer中移动的过程。buffer指用户空间中用于程序使用的内存。 从buffer中取出数据的过程称为output,也称为写操作; 将数据装进buffer的过程称为input,也称为读操作。 Java将计算机中输入输出的操作抽象为流,也就是IO流。 一、基本概念和分类 io流将数据比作流,从源头一直到目的地。由前述可以得知,输出的源头和输入的源头一定是buffer。 根据操作对象的不同,我们可以将流定义分为节点流和处理流。其中节点流直接作用于节点,沟通buffer与节点之间的数据,从特定的数据源(节点)读写数据。节点可以为文件,内存数组,字符串以及管道。而处理流则作用于节点流或者处理流,主要用于对已存在的流上的数据处理,实现更复杂强大的读写功能。 根据流的方向,我们可以将流划分为输入流和输出流。输入流即数据流入buffer,输出流即数据流出buffer。 根据流处理的数据形式,我们还可以将流划分为字节流和字符流。字节流可以用于处理所有形式的数据,因为数据本身就是以字节的形式存放,而字符流则用于处理字符数据,本质上还是操作字节数据,只不过通过编码方式对字节进行了转换处理。 二、字节流vs字符流 根据处理数据类型的不同,流分为字节流和字符流。 字节流与字符流的读写单位不同,字节流一次读取一个字节,而字符流一次读取一个字符(多个字节)

IO流中缓冲流的学习与理解

陌路散爱 提交于 2020-01-23 16:15:12
缓冲流学习及理解 关于缓冲流的理解 缓冲流与字节流读写时使用字节数组 关于缓冲区以及缓冲区刷新 文件复制中缓冲流的效果 总结 关于缓冲流的理解 缓冲流这个概念是针对底层流来说的,属于高层次的流,在平常的底层流(字节输入流)的使用中,发现的问题就是效率比较低,cpu与io的互动比较慢,原因主要在于io是慢速设备,在仅仅使用字节流来单字节读写时,cpu需要经常等待io,所以导致读写效率太低。此时,引入缓冲的概念,先把多个字节的数据放入内存,众所周知,内存的速度要比io快的多的多,虽然也赶不上cpu,但已经好很多了,cpu直接与内存互动,这自然提高效率。缓冲流的存在更像是套在底层流身上的一个外骨骼机甲,缓冲流对象进行什么动作,底层流也会进行什么动作,只用操作一次,不过因为数据在缓冲区,所以底层流真正处理数据是在数据从缓冲区流到底层流之后才会进行,动作相当于有点延迟,让子弹飞一会儿的感觉。 缓冲流与字节流读写时使用字节数组 字节流中是可以使用字节数组的,一次读取多个,放到数组中,而不是一次读取一个那么慢,可以提高读写的效率。而使用字节数组与缓冲流是不冲突的,我还想了好一会儿,想比一比那个更好,但其实两个可以一起使用。缓冲流是读取了暂时先放在缓冲区中,之后再给底层流;而字节数组是用在一次读取一个还是读取好几个的问题上,所以两个可以组合使用,也没必要讨论谁的效率更高。 关于缓冲区以及缓冲区刷新

Android 文件IO流的存储和读取

孤者浪人 提交于 2020-01-23 16:04:22
一、File 内部存储: 1、存储信息的函数: //存储信息 private void save ( String content ) { FileOutputStream fileOutputStream = null ; try { fileOutputStream = openFileOutput ( mFileName , MODE_PRIVATE ) ; fileOutputStream . write ( content . getBytes ( ) ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } finally { try { assert fileOutputStream != null ; fileOutputStream . close ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } } } 2、读取信息的函数: //读取信息 private String read ( ) { FileInputStream fileInputStream = null ; try { fileInputStream = openFileInput ( mFileName ) ; byte [ ] buff = new byte [

小白JAVA学习之IO流

流过昼夜 提交于 2020-01-22 07:07:49
通过初次学习,发现针对这些新入眼的这些关键字学过之后容易忘,过了一段时间再次看到这些关键字的时候,你认识我,我怎么想也不认识你,索性花点时间把这些看起来都长得差不多的关键字进行简单汇总,并不是为了分享,是为了自己增加记忆,懂我的自然懂,小白自有小白的傻方法,如果你是一只纯小白,故然明白我的意思,这就像当年第一次学习英语时背那些单词都是用中文谐音来标注一样的道理,不管用什么方法,能记住才是王道。 处理流(InputStreamReader 和 OutputStreamWriter) FileReader 继承自 InputStreamReader,即输入转换流,通过这个类可以将字节流转为字符流,字节是基本单位,相当于基础管道,同理,FileWriter 继承自 OutputStreamWriter。 InputStreamReader 和 OutputStreamWriter 分别是 Reader 和 Writer 的子类。 缓冲流 输入缓冲流 字节输入缓冲流:BufferedInputStream 字符输入缓冲流:BufferedReader 输出缓冲流 字节输出缓冲流:BufferedOutputStream 字符输出缓冲流:BufferedWriter 序列化和反序列化 序列化就是将内存中的对象输出到硬盘文件中进行永久保存,反序列化就是将硬盘中保存的数据还原成内存中的对象。

JAVA备忘录(一):IO流 (面试题)

百般思念 提交于 2020-01-20 22:52:51
1.java中有几种类型的流? A:一般来说有两种区分法 按字节流和字符流分成两种:字节流是基于二进制数据操作的,都继承于InputStream或者OutputStream这两个抽象类。而字符流是基于字符操作的,一般用来解决非英文数据的乱码问题,字符流类都继承于Reader和Reader这两个类。 按照输入输出流也可分成两种:输入流是指从内存或者数据通道上读取数据,比如说FileInputStream和FileReader;而输出流是指向内存或者数据通道中写入数据,比如说FileOutputStream和FileWriter。 2.字节流和字符流的区别 A:字节流是最基本的,计算机的所有数据都采用二进制数据的方法进行传输,而字节流进行操作的最基本单位就是单个字节,所以字节流通常被用来处理对二进制数据。Java中最基本的两个字节流类就是InputStream和OutputStream,所以继承它们的子类都是基于字节流操作的。 而字符流进行操作的最基本单位是Unicode码元(大小为两个字节),字符流经常被用来处理文本数据。Java中最基本的两个字符流父类就是Reader和Writer。所有继承它们两个的子类都是基于字符流操作的。 3.缓冲流与非缓冲流的区别。 A:缓冲流的底层实现了一个缓冲区,其实就是一个长度为8192的byte类型数组