黑马程序员技术交流社区
标题:
【厦门校区JavaEE就业6期-每日总结】缓冲流、转换流、序列化流
[打印本页]
作者:
厦门校区
时间:
2019-4-1 14:13
标题:
【厦门校区JavaEE就业6期-每日总结】缓冲流、转换流、序列化流
1、缓冲流为什么会提高IO流读写的效率?
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
3、序列化流中的serialVersionUID的作用
4、请根据自己的语言表述IO流的体系
作者:
魏政
时间:
2019-4-1 20:19
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
魏政
时间:
2019-4-1 20:20
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
郑海波
时间:
2019-4-1 20:27
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流在IO流读写过程中,会通过缓冲区进行数据的统一读写,降低IO读写数据的次数,提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在读写过程中,解码和编码所用的编码表格式不一致时,会发生乱码问题,因为所参照的编码表规则不一样。
因此在解码编码时,要保证编码表格式一致。
3、序列化流中的serialVersionUID的作用
序列化流中的serialVersionUID保证对象创建后对对象的定义进行修改,该对象的UID值也不会发生改变,这样在反序列化是就不会出现InvalidClassException 异常。
4、请根据自己的语言表述IO流的体系
IO流的基本流为字节输入输出流和字符输入输出流,但是该基本流方法效率较低。
为了提高效率,在该基本流的基础上开发了字节缓冲流和字符缓冲流,提高效率,
因为编码解码所用的字符集有很多类型,因此为了解决不同字符集间编码的乱码问题,在IO基本流的基础上开发了 InputStreamReader类和OutputStreamWriter类解决该问题。
为了将JAVA中的对象进项持久化存储,在IO基本流的基础上开发了ObjectOutputStream类和ObjectInputStream类对对象进行存储和解析。
为了能够方便地打印各种数据类型的值,在IO基本流的基础上开发了PrintStream类,进行数据打印,平时敲代码所用的System.out.println和System.out.print就是来自于该类。
作者:
陈驰煜
时间:
2019-4-1 20:29
1、缓冲流为什么会提高IO流读写的效率?
缓冲流在内存中创建了一个默认为8192长度的缓冲区数组, 当要写入的数据的字节数组长度不足8192时会先把数据复制到缓冲区数组中,
稍后再从缓冲区数组中写入硬盘中, 在内存中复制数据比不断从内存中复制数据到硬盘中快很多; 但当要写入的数据字节数组长度大于
8192时, 就需要扩大缓冲区数组, 否则将不会有提高读写效率的效果.
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当文本文件的字符集与ideal默认的字符集(utf8)不同时, 会产生乱码问题,;
产生原因是文本的解码方式与其编码方式不匹配, 无法正确解码;
解决方式:使用与文本文件字符集对应的字符集来解码
3、序列化流中的serialVersionUID的作用
在将对象序列化时, jdk会为对象的.class文件生成一个序列版本号(serialVersionUID), 用于识别.class文件与序列化对象, 当两者不匹配时将会
产生ClassNotFoundException异常, 反序列化失败.
解决方案: 通过 static final long serialVersion = 序列号, 手动设置一个UID, 防止序列化对象后又修改.class文件导致的UID不匹配
4、请根据自己的语言表述IO流的体系
输出流: 输入流:
FileOutputStream FileInputStream 普通字节流
BufferedOutputStream BufferedInputStream 缓冲流(高效字节流) 默认为8192长度的缓冲区数组
FileWriter FileReader 普通字符流
BufferedWriter BufferedReader 缓冲流(高效字符流) newline()和readline()
OutputStreamWriter InputStreamReader 转换流 字符流+可指定编码
ObjectOutputStream ObjectInputstream 序列化流 对象与文件的互相转换
PrintStream 打印流
作者:
黑马六期-董安平
时间:
2019-4-1 21:10
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流在创建流对象的时候,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,以此来提高读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
由于编码表的不同,当读取的时候使用的编码表与写入的时候使用的编码表不同的时候,会发生乱码问题,解决方法就是让读取的编码表跟写入的编码表相同,就不会出现乱码的情况。
3、序列化流中的serialVersionUID的作用
答:
作用在于固定序列号,让它不会因为.class修改发生序列变化,当版本发生变化时,反序列化会抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答;
IO流体系可按照最小单位分为字符流、字节流,根据流向可分为输入流和输出流
在这四类基础流之上还有提高数据吞吐能力的缓冲流、解决编解码乱码问题的转换流,以及序列化流,序列化流的作用是将对象信息永
作者:
龙舟
时间:
2019-4-1 21:10
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO
次数,从而提高读写的效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在IDEA中,使用 FileReader 读取项目中的文本文件。由于IDEA的设置,都是默认的 UTF-8 编码,所以没有任何
问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。
可以通过转换流让字符与字节相互转换
3、序列化流中的serialVersionUID的作用
serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版
本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID
进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastException。
4、请根据自己的语言表述IO流的体系
IO流是用来处理设备之间的数据传输
按流向分为:输出流和输入流
操作数据分为:字节流和字符流
java对数据的操作是通过流
作者:
陈伟彬
时间:
2019-4-1 21:19
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流会在内存创建一个默认大小的缓冲数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率;
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
产生情况:例如将默写数据按A规则进行存储,再按A规则进行解析,此时解析正常,但是如果按A规则存储,却按B规则进行解析,这个时候就会出现乱码问题;
产生原因:编码和解码的方式不一致;
解决方案:保证编解码的方式一致,即用转换流指定相同的编码表进行编解码;
3、序列化流中的serialVersionUID的作用
答:
作用:指定类的序列号,令其保持不变;使得类的class文件发生改变后,再进行反序列化不会抛出序列化冲突异常;
4、请根据自己的语言表述IO流的体系
答:
基本流:四种,字节输入输出流和字符流输入输出流;是对数据进行读写操作;
高效流:四种,字节缓冲输入输出流和字符缓冲流输入输出流;是对基本流的增强,提高基本流的读写效率;
转换流:两种,InputStreamReader类和OutputStreamWriter类;是字节流与字符流之间的转换流,能指定编码表进行编解码,防止出现乱码;
序列流:两种,序列化流和反序列化流;是将对象保存为文件或将文件重构成对象的流;
打印流:一种,PrintStream类;能够方便地打印各种数据类型的值;
作者:
陈志铖
时间:
2019-4-1 21:29
1、缓冲流为什么会提高IO流读写的效率?
缓冲区存在内存中,内存读写数据的时候,与内存之间的读写最快
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在IDEA中,使用 FileReader 读取项目中的文本文件。由于IDEA的设置,都是默认的 UTF-8 编码,所以没有任何
问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流转换文件编码
转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定
的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。
转换流 java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符
编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。 serialVersionUID 该版本号的目的在于验证序
列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
四个基本类:InputStream OutputStream Reader Writer类 可以按照数据流向划分,也可以按照数据类型划分.
一切皆为字节
字节流
java.io.OutputStream 抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字
节输出流的基本共性功能方法。
public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流。
public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
public abstract void write(int b) :将指定的字节输出流。
java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入
流的基本共性功能方法。
public void close() :关闭此输入流并释放与此流相关联的任何系统资源。
public abstract int read() : 从输入流读取数据的下一个字节。
public int read(byte[] b) : 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。
java.io.Reader 抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入流的基本共性功能方法。
public void close() :关闭此流并释放与此流相关联的任何系统资源。
public int read() : 从输入流读取一个字符。
public int read(char[] cbuf) : 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。
java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。
void write(int c) 写入单个字符。
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush() 刷新该流的缓冲。
void close() 关闭此流,但要先刷新它。
缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类:
字节缓冲流: BufferedInputStream , BufferedOutputStream
字符缓冲流: BufferedReader , BufferedWriter
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO
次数,从而提高读写的效率。
转换流
转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定
的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。
转换流 java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符
编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。
序列化
java.io.ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。
ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。
打印流
平时我们在控制台打印输出,是调用 print 方法和 println 方法完成的,这两个方法都来自于java.io.PrintStream 类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式
作者:
javawjs
时间:
2019-4-1 21:30
王佳盛
1、 缓冲流为什么会提高IO流读写的效率?
答:
我们在使用缓冲流的时候,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写数据,减少系统IO次数,从而提高读写的效率。
2、 我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
读写过程中,如果读和写的时候使用与系统默认编码表不同的编码表进行操作,就会产生乱码问题;
不同在写入的过程中,IDE使用U8编码表进行编码,而我们的Windows系统的默认使用的是GBK编码表,所以产生了乱码现象。
可以使用转换流InputStreamReader、OutputStreamWriter进行指定编码表读写;这样就可以避免乱码问题。
3、 序列化流中的serialVersionUID的作用
答:
被序列化的对象所属的类,如果没有指定一个serialVersionUID,那么JVM就会根据类的定义帮我们设置一个serialVersionUID;当每次类进行改动时,serialVersionUID也会随之改变,我们在进行反序列化操作是就会出现InvalidClassException异常;
如果我们指定了serialVersionUID,那么在我们修改类的时候,serialVersionUID始终保持不变;这样就保证了我们在进行反序列化的过程中不会出现InvalidClassException异常。
4、 请根据自己的语言表述IO流的体系
答:
IO流是内存和外界进行交互动作的一种通道;
四种基本流:
字节流
FileInputStream:字节输入流
FileOutputStream:字节输出流
字符流
FileReader:字符输入流
FileWriter:字符输出流
缓冲流:能够提高系统IO的效率
缓冲字节流
BufferedInputStream:缓冲字节输入流
BufferedOutputStream:缓冲字节输出流
缓冲字符流
BufferedReader:缓冲字符输入流
特有方法:readLine(),一次读取一行内容;
BufferedWriter:缓冲字符输出流
特有方法:newLine(),换行的操作
转换流:能够解决乱码问题
InputStreamReader:能过指定编码表进行读取文件内容
OutputStreamWriter:能够指定编码表将数据写入文件当中
序列化流:使用必须实现Serializable接口
ObjectInputStream
特有方法:ReadObject(),将对象序列化为文件
ObjectOutputStream
特有方法:WriteObjeect(),将文件重构为对象
打印流:PrintStream
作者:
厦门第六期刘鹏
时间:
2019-4-1 21:35
1、缓冲流为什么会提高IO流读写的效率?
多次获取,一次导入
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
编写和编译格式不对 定义相同格式
3、序列化流中的serialVersionUID的作用
添加标记
4、请根据自己的语言表述IO流的体系
对数提供输入和输出。
作者:
龚荣章
时间:
2019-4-1 21:35
1、缓冲流为什么会提高IO流读写的效率?
缓冲流是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码,解码的规则不同时就会产生乱码问题,我们使用转换流InputStreamReader和OutputStreamWriter类来避免乱码问题.
3、序列化流中的serialVersionUID的作用
要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一个标记
当我们进行序列化和反序列化的时候,就会检测类上是否有这个标记,如果我们进行了序列化之后修改类再进行反序列化序列号就会改变,
反序列化就会报异常,serialVersionUID固定了序列号防止了这种情况
4、请根据自己的语言表述IO流的体系
分为四个基本流:字节输出,字节输入,字符输出,字符输出.这四个可以按照方向分为两类:输出流和输入流.
有四种加强版流:转换流,缓冲流,序列化流,打印流
转换流是基本流的强化版,基础流是普通人,转换流就是人穿上了铠甲
加强流的根本都是基础流
作者:
罗加铭
时间:
2019-4-1 21:36
1、缓冲流为什么会提高IO流读写的效率?
答:在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统io次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:在使用IDEA时默认的UTF-8编码,但是在Windows系统默认的GBK编码,就会出现乱码;可以使用OutputStreamWriter类,使用指定的字符集将字符编码为字节
3、序列化流中的serialVersionUID的作用
答:用于验证序列化的对象和对应类是否版本匹配
4、请根据自己的语言表述IO流的体系
答:
字节流:InputStream(字节输入流)、OutputStream(字节输出流)
字符流:Reader(字符输入流)、Writer(字符输出流)
字节缓冲流:BufferedInputStream(字节缓冲输入流)、BufferedOutputStream(字节缓冲输出流)
字符缓冲流:BufferedReader(字符缓冲输入流)、BufferedWriter(字符缓冲输出流)
转换流:InputStreamReader、OutputStreamWriter
作者:
黑马6期陈华
时间:
2019-4-1 21:40
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流使用了缓冲区,缓冲区是一个数组,它可以减少程序读写硬盘的次数,一次性搬运一个数组长度的数据字节,提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码和解码的字符集不同时,就会发生乱码的问题。
3、序列化流中的serialVersionUID的作用
每个类在实现Serializable接口时,都会被赋予一个自动生成的序列号,用来在做序列化和反序列化的操作的时候来检测类是否被更改了。
4、请根据自己的语言表述IO流的体系
按数据流向分为两大类:输出流和输入流。
按数据类型分为两大类:字节流和字符流。
按照功能分为:缓冲流、转换流、打印流、序列化流。
作者:
高坂火龙果
时间:
2019-4-1 21:40
黄志斌:
1、缓冲流为什么会提高IO流读写的效率?
缓冲流在创建时会创建一个缓冲区数组,通过这个缓冲区来读写可以减少系统IO的次数,来达到提高效率的效果
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
写入的字符编码和文件本身的字符编码不同,就会出现乱码问题,通过使用转换流指定编码方式来解决这个问题
3、序列化流中的serialVersionUID的作用
提供一个固定不变的序列号,避免序列化失败
4、请根据自己的语言表述IO流的体系
IO流按照流向分分为输入流和输出流
IO流按照格局分分为字节流和字符流
在这些的基础上,又因不同的需求分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等
这些流都继承了各自父类的成员方法,其中缓冲流中的BufferedReader、和BufferedWriter拥有自己特有的成员方法readLine()和nextLine()以及打印流拥有自己特有的方法println()和print()。缓冲流的作用是增强流的读写速度,转换流的存在是为了实现不同的编码表之间内容的转换
作者:
陈前凌
时间:
2019-4-1 21:41
1、缓冲流为什么会提高IO流读写的效率?
我们在创建对象的时候,会创建一个内置的默认大小的缓冲数组,数据读写会通过缓冲区,减少IO的次数,从而提高读写效率;
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
问题:当按一种编码规则编码而没有按这种规则解码就会出现乱码现象
解决:我们引入了转换流,可以指定数据读写传送数据的编码规则。
3、序列化流中的serialVersionUID的作用
作用:序列号在反序列化的时候会进行校验,必须保证序列号和反序列号一致,才可以反序列化。
4、请根据自己的语言表述IO流的体系
IO流有四种基础流
InputStream字节输入流和OutputStream字节输出流
reader字符输入流和writer字符输出流
又有四种缓冲增强流
BufferedInputStream字节缓冲输入流和BufferedOutputStream字节缓冲输出流
Bufferedreader字符缓冲输入流和Bufferedwriter字符缓冲输出流
两种字符转换流
InputStreamreader字符转换输入流和OutputStreamwriter字符转换输出流
两种序列化流
ObjectOutputStream序列化流和ObjectInputStream反序列化流
打印流
printStream
作者:
陈弘帅
时间:
2019-4-1 21:42
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流读写数据是在内存中的缓冲区,缓冲区与内存间的数据读取速度比内存与硬盘间的读取速度快很多。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当读写的编码,解码格式不同时,会发生乱码问题。保证编码和解码格式一致就能避免乱码的产生。
3、序列化流中的serialVersionUID的作用
serialVersionUID用于验证序列化对象与对应类的版本是否匹配,只有匹配的对象才能进行反序列化。
4、请根据自己的语言表述IO流的体系
IO流用于内存与硬盘间的数据读写(InputStream和OutputStream)。
按数据类型分为字节流与字符流,按流向分为输入流和输出流。
字节输入流:FileInputStream
字节输出流:FileOutputStream
字符输出流:FileWrite
字符输入流:FileReader
以上四种为基本流,IO流还有一些在基础流的基础上,根据不同作用划分的高效流,
比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。
字节缓冲流: BufferedInputStream , BufferedOutputStream
字符缓冲流: BufferedReader , BufferedWriter
转换流 java.io.InputStreamReader,它读取字节,并使用指定
的字符集将其解码为字符。
转换流 java.io.OutputStreamWriter 写出数据,使用指定的字符集将字符
编码为字节
转换流的字符集可以由名称指定,也可以接受平台的默认字符集。
序列化:java.io.ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。
反序列化:ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。
作者:
黄成龙
时间:
2019-4-1 21:42
1、缓冲流为什么会提高IO流读写的效率?
因为在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当文件的编码格式和解码格式不一致时会发生乱码问题,例如一个文件编码时是GBK格式,解码时用的是UTF-8格式,就会显示乱码。
保证编码和解码方式一致可以解决乱码问题
3、序列化流中的serialVersionUID的作用
serialVersionUID的目的在于验证序列化的对象和对应类的版本是否匹配
4、请根据自己的语言表述IO流的体系
IO流按数据的流向分为:输入流和输出流
IO流按数据的类型分为:字节流和字符流
两两组成4种基本流,即:字节输入流(InputStream)、字节输出流(OutputStream)、字符输入流(Reader)和字符输出流(Writer)。
按功能需求的不同,分为几种流,即缓冲流(高效流)、转换流、序列化流和打印流。
缓冲流
的作用是解决IO流的效率问题;
根据数据类型分为4种:字节缓冲流(BufferedInputStream和BufferedOutputStream)、字符缓冲流(BufferedReader和BufferedWriter),字符缓冲流有自己特有的成员方法readLine()和nextLine()
转换流
的作用是解决字符和字节的转换问题,实现不同编码表的转换;
分为:InputStreamReader和OutputStreamReader
序列化流
的作用是解决对象序列化问题;
分为:序列化(ObjectOutputStream)--将对象转换为文件,进行持久化存储
反序列化(ObjectInputStream)--将序列化的数据文件恢复为对象
打印流(PrintStream)
的作用是方便打印各种数据类型的值;
作者:
庄家琦
时间:
2019-4-1 21:43
1、缓冲流为什么会提高IO流读写的效率?
缓冲流也叫高效流
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
编写文本会以不同编码表呈现,再以改编码表转换成计算机能识别的二进制,
在读取文本时候不同的编码表解码的内容不同.只有用编写的编码表解码才不会出现乱码,
否则用非编码的编码表解析会出现乱码
例如编码用UTF-8编写 解码用GBK读取会出现乱码
解决方法解码与编码的编码表相同相同
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。 serialVersionUID 该版本号的目的在于验证序
列化的对象和对应类是否版本匹配
4、请根据自己的语言表述IO流的体系
IO流关于文件夹或者文件运用的
IO流关系到内存是以内存为对象拓展的运用
包含缓冲流( 字节流 字符流)
转换流
序列化流
打印流
关IO流的字符集和Propeties类
作者:
曾伟清
时间:
2019-4-1 21:43
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲流在创建对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:Idea默认的编码表是utf-8,当我们查看gbk文件是就会产生乱码问题。原因:当编码与解码所参照的规则不同就会发生乱码问题。
解决:我们可以先用Inputstreamreadr用gbk编码表规则将文件读取出来,再用OutoutStreamwriter用utf-8编码表规则将读取出来的内容编码输入文件,即转换格式。
3、序列化流中的serialVersionUID的作用
答:当序列化对象时,对应的类会编译成class文件自动生成一个serialVersionUID,而保存对象的文件也会生成一个serialVersionUID,在反序列化文件时就需要输入流中读取的
对象的serialVersionUID要与类的class文件中的serialVersionUID一致,才能反序列化成功。
4、请根据自己的语言表述IO流的体系
答:IO流有四个基本流分别是Fileinputstream、Fileoutputstream、Filewriter、Filereadr。
四个缓冲流:Bufferedinputstream、Bufferedoutputstream、Bufferedwriter、Bufferedreadr。它们底层分别为四个基本流,作用提高基本流效率。
2个转换流:Outputstreamwriter底层Fileoutputstream;Inputstreamreader底层Fileinputstream;作用:可以通过指定编码规则读写文件。
序列化流Objectoutputstream,将对象转换成字节,存入文件中;反序列化流Objectinputstream,将文件中的字节反序列化成对象。
打印流:Printstream,能够方便的打印各种数据类型的值,是一种便捷的输出方式。
作者:
余建强
时间:
2019-4-1 21:46
1、缓冲流为什么会提高IO流读写的效率?
JVM建立缓冲流对象时,会同时建立一个缓冲区数组,读写时先将数据存入缓冲区数组,待其存满后再将数据返回,这样一来减少了内存和硬盘的IO次数,也即提高了读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当文件的编码格式和解码格式不一致时会发生乱码问题,例如若一个文件编码时用的是GBK格式,而解码时采用的是utf8格式,则显示出来的就是乱码;
可以通过转换流InputStreamReader类和OutputStreamWriter类搭建字符和字节的桥梁,在创建这两个类的对象时指定编码的格式,即可正确的读写文件。
3、序列化流中的serialVersionUID的作用
若某个类的某些对象被序列化后,又对这个类进行了修改,则在反序列化的时候会重新计算序列版本号,前后的序列版本号不一致则反序列化时会抛出 InvalidClassException 异常。
因此在类中加入成员变量serialVersionUID,用static、final和long修饰,这样即使之后修改了类中的内容,序列版本号也不会被修改,因此可以顺利进行反序列化。
4、请根据自己的语言表述IO流的体系
IO流大体以两种划分方式为根本:输入与输出、字节与字符,两两组合成了4种流的根类,也即InputStream、OutputStream、Reader和Writer。在这4个根类之下,又因功能需求的不同,而分别有几个子类,如为解决IO的效率问题的类:缓冲流(BufferedInputStream等);为解决字符和字节转换问题的类:转换流(InputStreamReader、OutputStreamWriter);为解决对象序列化问题的类:ObjectInputStream;还有其他如过滤流(FilterInputStream等)、文件流(FileInputStream等)、管道流(PipedInputStream等)、音频流(AudioInputStream等)等。
作者:
徐代成
时间:
2019-4-1 21:47
1、缓冲流为什么会提高IO流读写的效率?
缓冲流在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当我们用idea直接将字符写入到电脑,在电脑直接打开时会发生乱码现象
乱码产出的原因是在写入写出的时候使用的编码表不一致导致的
在写入写出的时候我们可以通过字符转换流指定统一的编码表。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号serialVersionUID ,该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
IO流包括
四个基本流:字节输入流,字节输出流,字符输入流,字符输出流。
四个缓冲流:字节缓冲输入流,字节缓冲输出流,字符缓冲输入流,字符缓冲输出流。缓冲流是在基本流基础上提高效率
两个转换流:InputStreamReader,OutputStreamWriter 是字节流与字符流转换的桥梁
两个序列化流:ObjectInputStream,ObjectOutputStream
一个打印流:PrintStream
作者:
李智梁
时间:
2019-4-1 21:49
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲的在创建流对象的时候,会在内存创建一个内置默认大小的缓冲区数组,
通过缓冲区读写,减少系统IO次数,从而提高了读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:我们的操作系统和IDEA使用的编码器是不同的,在读取相同的字符时,由于在不同的编码表中是用不同的二进制表示的,
使用的不是相同的编码表编码和解码的格式不一致就会发生乱码,我们可以使用转换流来解决编解码问题,就是让我们的字
节流可以是使用可变的编码集,输入自己需要转化的编码格式,即可进行转化。
3、序列化流中的serialVersionUID的作用。
答:若某个类的某些对象被序列化后,又对这个类进行了修改,则在反序列化的时候会重新计算序列版本号,前后的序列版本
号不一致则反序列化时会抛出 InvalidClassException 异常。
因此在类中加入成员变量serialVersionUID,用static、final和long修饰,这样即使之后修改了类中的内容,序列版本号也
不会被修改,因此可以顺利进行反序列化。
4、请根据自己的语言表述IO流的体系
答:(1)IO流按照流动的方向,以内存为基准,分为输入流和输出流;格局数据的类型分为字节流和字符流。
(2).IO流包括基本字节流,字符流:从字节流衍生而来,由于字节在读取中文时,只能读取中文字符的一部分,产生了字符流.
(3)在这两个流的基础上加强的有:
A.缓冲流:将两个流进行增强,提高读写的效率;
B.转换流:由于在编码格式和解码格式不一致,出现乱码,需要指定对应编码的字符集和解码字符集,解决编码和解码格式不一致问题;
C.序列化流:将对象封装再进行序列化成字节进行保存,反序列化时将字节转为对象展示,可以防止文本被修改问题;
D.打印流:为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式.
作者:
刘曾铭
时间:
2019-4-1 21:50
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流会在内存创建一个默认大小的缓冲数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率;
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
产生情况:例如将默写数据按A规则进行存储,再按A规则进行解析,此时解析正常,但是如果按A规则存储,却按B规则进行解析,这个时候就会出现乱码问题;
产生原因:编码和解码的方式不一致;
解决方案:保证编解码的方式一致,即用转换流指定相同的编码表进行编解码;
3、序列化流中的serialVersionUID的作用
答:
作用:指定类的序列号,令其保持不变;使得类的class文件发生改变后,再进行反序列化不会抛出序列化冲突异常;
4、请根据自己的语言表述IO流的体系
答:
基本流:四种,字节输入输出流和字符流输入输出流;是对数据进行读写操作;
高效流:四种,字节缓冲输入输出流和字符缓冲流输入输出流;是对基本流的增强,提高基本流的读写效率;
转换流:两种,InputStreamReader类和OutputStreamWriter类;是字节流与字符流之间的转换流,能指定编码表进行编解码,防止出现乱码;
序列流:两种,序列化流和反序列化流;是将对象保存为文件或将文件重构成对象的流;
打印流:一种,PrintStream类;能够方便地打印各种数据类型的值;
作者:
zhaizhile
时间:
2019-4-1 21:52
转换流 java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符
编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集
作者:
卢勇炜
时间:
2019-4-1 21:53
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲流在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高续写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:当我们按照A规则存储,却按照B规则解析,就会导致乱码现象。比如IDEA的设置都是默认的UTF-8编码,但是当读取windows系统中创建的文本文件,由于windows系统的默认是GBK编码,就会出现乱码。
3、序列化流中的serialVersionUID的作用
答:因为序列化在进行反序列化的时候回进行校验,必须保证序列号一致才能反序列化,否则抛出异常,serialVersionUID的作用就是为了防止序列号冲突了。
4、请根据自己的语言表述IO流的体系
答:IO流根据数据的流向分为:输入流和输出流;又根据数据的类型分为:字节流和字符流。
输入流 :把数据从其他设备上读取到内存中的;
输出流 :把数据从内存中写出到其他设备上的;
字节流 :以字节为单位,读写数据的;
字符流 :以字符为单位,读写数据的;
缓冲流:高效续写的缓冲流,是对4个基本的 FileXxx 流的增强,一共4个流;缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
转换流:分为:(1)InputStreamReader是Reader的子类,是从字节流到字符流的桥梁
(2)OutputStreamWriter是Writer的子类,是从字符流到字节流的桥梁。
序列化流:用一个字节序列可以表示一个对象,该字节序列包含该 对象的数据,对象的类型和对象中存储的属性 等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。
打印流:使用指定的文件名创建一个新的打印;该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。
作者:
黄振明
时间:
2019-4-1 21:53
1、缓冲流为什么会提高IO流读写的效率?
答:缓冲流在创建对象时,会内置一个默认大小的缓冲区数组,通过缓冲区读写,缓冲区与内存之减的读写速度非常快,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:编码与解码不同时就会出现乱码问题。当我们用GBK格式的文件通过FileReader对文件进行读写,FileReader查询IDE默认码表UTF-8,发现两者的码表格式不同就产生了乱码。使得编码与解码相同就不会出现乱码问题。
3、序列化流中的serialVersionUID的作用
答:当我们对某个类进行序列化后,又对其修改了数据,然后并未重新对这个类进行序列化,之间进行反序列化,导致class的序列号和文本的序列号不同,抛出异常而序列号的作用是给要序列化的流做个标记,我们可以通过final修饰serialVersionUID将这个序列号固定为常量就不会产生异常问题
4、请根据自己的语言表述IO流的体系
答:
IO流分为:字节输入输出流、字符输入输出流4种类型。即InputStream、OutputStream、Reader和Writer。因不同的需求在基本流上又设置了缓冲流、转换流、序列化流和打印流
缓冲流:为提高读写效率
转换流:由于不同的编解码会产生乱码,而转换流可以指定编码的字符集和解码的字符集
序列化流:序列化可以将对象转化为文件进行永久性存储,反序列化可以将文件恢复成对象
作者:
java基础6期刘伟
时间:
2019-4-1 21:55
、缓冲流为什么会提高IO流读写的效率?
因为缓冲流在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当数据所编码的对应的编码表与解码所用的编码表不同时会发生乱码。
是由于编码和解码所使用的编码表不同而产生的
通过转换流进行解决
3、序列化流中的serialVersionUID的作用
用于解决当类的class文件中的数据发生改动时,反序列化时抛出的文件序列号对应不上的异常
4、请根据自己的语言表述IO流的体系
按照传输方向不同分为输入流和输出流,按照操作数据的不同分为字符流和字节流,InputStream和OutputStream是字节流的顶级父类,Writer和Reader是字符流的顶级父类。根据功能的不同,其子类又分为文件流、缓冲流、转换流、序列化流、打印流等。主要是进行文件和数据传输的。
作者:
omasoo
时间:
2019-4-1 21:57
李伟斌
1、缓冲流为什么会提高IO流读写的效率?
答:因为在内存中建立了缓冲数据,减少IO次数,提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:编码和解码的标准不一致的时候,会发生乱码。解决方案是统一编码和解码的标准。
3、序列化流中的serialVersionUID的作用
答:serialVersionUID在于验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
答:IO流从反向上分输入流和输出流两种,从大小上分为字节流和字符流两种。
作者:
chenopen
时间:
2019-4-1 21:59
陈开明:
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流是在创建流对象时候,会在内存中新建了一个默认大小的缓存数组,通过缓冲区数组,内存与内存之间的读写速度远远快于内存与其他设备的读写速度,能有效减少系统IO读写次数,提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码和解码使用不是同一套编解码规则时候,会发生乱码问题。
使用转换流来解决。java.io.InputStreamReader是从字节流到字符流的桥梁。它读取字节,并使用指定
的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。
java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符
编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。
3、序列化流中的serialVersionUID的作用
serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
IO流分为输入流(InputStream,Read)和输出流(OutputStream,Write)两类。
InputStream是字节输入流的父类。包括FileInputStream,BufferedInputStream子类
OutputStream是字节输入流的父类。包括FileOutputStream,BufferedOutputStream子类
Read是字符输入流的父类。包括FileReader,BufferedRead,InputStreamReader子类
Write是字符输出流的父类。包括FileWriter,BufferedWriter,OutputStreamWriter子类
作者:
李伟艺
时间:
2019-4-1 21:59
1、缓冲流为什么会提高IO流读写的效率?
缓冲流在创建时,会内置一个缓冲区来减小实际读写系统IO的次数从而加速读写操作的速度提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码和解码过程使用的编码表和字符集不一致的时候,就会发生乱码问题(最常见的情况是中文版Windows默认使用GBK编码的文件被IDEA直接以UTF-8去试图打开的时候)。在Java中解决乱码问题,可以在进行IO操作时候使用转换流,将字节流转换为使用制定编码进行访问的字符流,或者把字符流按照制定编码转化为字节流。
3、请根据自己的语言表述IO流的体系
IO流是Java中对于系统IO资源的访问方式。
IO流以字节流为基础。根据流向(输入还是输出)分为输入流(数组从外部到内存)和输出流(从内存输出到外部)。
为了方便对文本、字符等进行操作,于是乎在以字节流为基础,在结合编码表的情况下,通过转换流而形成了字符流使得对文本的操作更加直观。
为了提升IO操作的效率和速度,又引入了缓冲流,从而大幅度的提高了读写操作的效率。
为了更加方便的进行输出操作,于是又引入了打印流,专门用于把各种数据类型的数据打印输出到流中。
而开发中,为了能把对象永久保存或者实现其网络发送(预习时候看到TCP协议通信在Java也是使用字节流来实现),又引入了序列化流和反序列化流,可以把对象转化成字节序列通过字符流保存起来或者把字节序列还原成对象。
作者:
吴越
时间:
2019-4-1 21:59
1、缓冲流为什么会提高IO流读写的效率?
答:内存间读写数据的速度比从硬盘中读写数据的速度快很多,缓冲流通过内存中内置默认大小(8192)的缓冲区数组接收硬盘中的数据,通过缓冲区读写减少系统的IO次数,所以提高了IO读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:读写过程中,编码和解码的标准不同会发生写入乱码的问题。通过统一编码和解码的标准可以解决乱码问题。例如windows记事本默认用GBK编码,通过记事本写的文字用默认UTF-8解码的IDEA打开是乱码,可以通过InputStreamReader方法指定GBK字符集解码,从而避免乱码。
3、序列化流中的serialVersionUID的作用
答:Serializable 接口给需要序列化的类,提供了一个序列版本号serialVersionUID,目的在于验证序列化的对象和对应类是否版本匹配。如果对类进行和修改,那么其序列标本号也会发生修改。可通过在类中写死序列版本号,使修改后的类依然能够匹配序列化的对象。
4、请根据自己的语言表述IO流的体系
答:IO流的顶层有两种分类方式,按类型可分为【字节流】和【字符流】,按流向可分为【输入流】和【输出流】。
两两组合后可产生IO流的4个【顶层接口】:
字节输出流【OutputStream】(常用有close、flush、write(byte[])方法);
字节输入流【InputStream】(常用有close、read(byte[])方法);
字符输出流【Writer】(常用有close、flush、write(char[])方法);
字符输入流【Reader】(常用有close、read(char[])方法);
【顶层接口的子类体系】:
①【文件流】:【File】+【顶层接口】
(FileOutputStream\FileInputStream\FileWriter\FileReader)
· 构造方法传入的参数为File对象或文件名
②【缓冲流】:【Buffered】+【顶层接口】
(BufferedOutputStream\BufferedInputStream\BufferedWriter\BufferedReader)
· 构造方法传入的参数一般为文件流,可以大幅提高读写效率。
· 特有方法:BufferedReader: public String readLine() : 读一行文字。
BufferedWriter: public void newLine() : 写一行行分隔符,由系统属性定义符号。
③【转换流】:【顶层字节流】+【顶层字符流】
(OutputStreamWriter\InputStreamReader)
· 属于【字符流】的子类,是沟通字节流和字符流的桥梁,构造方法传入的参数一般为字节流的文件流。
· 特有方法:可以在构造方法的参数中指定读写的字符集。
④【序列化】:【Object】+【顶层字节流】
(ObjectOutputStream\ObjectInputStream)
· 属于【字节流】的子类,是【内存中对象的数据】与【硬盘中文件里的数据】转换的桥梁,构造方法传入的参数一般为字节流的文件流。
· 特有方法:ObjectOutputStream:public final void writeObject (Object obj) : 将指定的对象写出。
ObjectInputStream:public final Object readObject () : 读取一个对象。
⑤【打印流】:(PrintStream)
· 属于字节输出流【OutputStream】的子类,可以改变打印流向。
其他:
还有一个【Properties】类,继承于【Hashtable】,虽然不属于【IO】类,但是是双列集合和数据文件之间转换的桥梁。
IO相关特有方法:public void load(InputStream in):从字节输入流中读取键值对,生成Properties集合。
public void store(OutputStream out,String comments):从Properties集合中获取键值对,输出到字节输出流的文件中。
作者:
林艺彬
时间:
2019-4-1 21:59
1、缓冲流为什么会提高IO流读写的效率?
缓冲流会在内存中创建一个缓冲区,将数据传入缓冲区,缓冲区直接和内存读写速度更快,从而减少IO次数,提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在编码不一致的时候会产生乱码问题。
怎样产生:当我们读取一个系统文件的时候,文件的编码和编译器默认的编码不一致的时候,就会产生写入乱码问题。
解决:通过转换流将文件的编码转换成和编译器默认的编码一致进行读写。
3、序列化流中的serialVersionUID的作用
序列化流中在将一个对象序列化到文件的的时候都会产生一个serialVersionUID码,给对象进行一个标记,对象在序列化后发生改变,则serialVersionUID码也会发生改变。在反序列化的时候serialVersionUID码必须一致,否则编译器会抛 InvalidClassException 异常。可以在创建对象的时候,固定serialVersionUID码,让它不会因为.class修改发生改变。
4、请根据自己的语言表述IO流的体系
IO流包括基本IO流和高效流、转化流、序列化、打印流
基本IO流有:字节输入输出流、字符输入输出流;
高效流也称缓冲流:也有字节、字符的输入输出流;缓冲流 BufferedOutputStream和BUfferedInputStream
转化流:有两个InputStreamReader(读取字节 解码为字符)和OutputStreamWriter(写出字符 ,编码为字节),编码解码时用
序列化:当想对对象进行IO流存储时用到的ObjectOutputStream和ObjectInputStream 序列化想要读取回来要用到反序列化
打印流:对输出流的包装
作者:
林志鹏
时间:
2019-4-1 21:59
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流在创建的时候会在内存中创建一个数组缓冲区;
通过缓冲读写就会减少系统读写IO次数这样就会提高读写的效率;
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
读写过程中当读取的文本文件编码格式跟写入的编码格式不一致时就会发生写入乱码;
产生:两个编码之间不同的文本文件不能直接读写,各自编码表自己的编码字节不同方式不同,直接读写会产生乱码;
比如UFT-8字符是用一到四个字节 GBK字符为两个字节,当发生转换时计算机无法互相转换不同字节方式的编码;
解决:有两个桥梁让字节流和字符流之间可以转换编码;
①一个InputStreamReader是从字节流到字符流的桥梁:读取字节,并使用指定的字符集将其解码
②一个OutputStreamWriter是从字符流到字节流的桥梁:使用指定的字符集将字符编码为字节
3、序列化流中的serialVersionUID的作用
serialVersionUID的作用:在序列化对象之后发生了修改,那么会新生成一个对象class文件,反序列化时这类的序列版本号就会跟流中读取的类的版本号不匹配,这样就会抛出异常,Serializable接口标记了该类,提供了一个序列版本号。然后serialVersionUID来验证序列号是否匹配
4、请根据自己的语言表述IO流的体系
IO流总共可以分成两类:字节与字符流、输入与输出流。下方又有四个基本流:
InputStream字节输入流、OutputStream字节输出流、Reader字符输入流、Writer字符输出流
四个基本流下方有几个子类:
缓冲流:是用来提高效率;有字节缓冲流:BufferedInputStream 、BufferedOutputStream 字符缓冲流: BufferedReader , BufferedWriter
转换流: 实现不同的编码表之间内容的转换;InputStreamReader类:从字节流到字符流 OutputStreamWriter类:从字符流到字节流
序列化流:对象和文件之间转换;ObjectInputStream 序列化流 ObjectInputStream 反序列化流
打印流:能够方便地打印各种数据类型的值是一个便捷的输出方式;PrintStream类
作者:
6期江岳
时间:
2019-4-1 22:00
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流会在缓冲区创建一个数组,将数据存入 一次性读取或写出从而节省时间
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
读取编码为gbk的文件时会出现乱码问题,在读写时指定读写的编码方式
3、序列化流中的serialVersionUID的作用
将序列号写死,解决了更改类的内容时导致反序列报错的问题
4、请根据自己的语言表述IO流的体系
IO中按数据传输方向分为输入流与输出流,根据数据类型分为字符流与字节流从而有字节输入流、字节输出流、字符输入流、字符输出流。
缓冲流是将上述四种流强化,会有更快的传输速度
转换流是字符与字节的转换桥梁,解决的编码乱码的问题
序列化流将一个对象内容持久化到文件中
反序列化流将序列化内容恢复为对象
打印流能够方便打印各种数据类型
作者:
管文祥
时间:
2019-4-1 22:00
1、缓冲流为什么会提高IO流读写的效率?
答:因为缓冲流在创建对象流时,会创建一个默认长度的缓冲区数组,通过缓冲区读写,减少访问系统的次数,从而提高IO流的读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:当读和写操作中字符的编码格式不同时,会出现写入乱码问题,通过转换流解决,指定对应的编码格式和解码格式,通过InputStreamReader/OutputStreamWriter的构造方法让他们的编码集相同,就可以够解决乱码问题。
3、序列化流中的serialVersionUID的作用
答:用来固定序列号,防止因修改.class文件发生序列化改变,反序列化时抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答:按照格局分IO流可分为字节流和字符流
按照流向分IO流可分为输入流和输出流
在此基础上,又因不同的需求可以分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等。这些流都继承了各自父类Reader/Writer的成员方法,其中缓冲流中的BufferedReader、和BufferedWriter拥有自己特有的成员方法readLine()和nextLine(),打印流拥有自己特有的方法println()和print()。缓冲流的作用是增强流的读写速度,转换流的存在是为了实现不同的编码表之间内容的转换。转换流:用于解决编码和解码过程中因为格式不一致出现的乱码问题,通过指定相应的编码格式,解决乱码问题。序列化流中用一个字节序列表示一个对象,用于存储对象信息,另一种创建对象的方式。
作者:
管文祥
时间:
2019-4-1 22:01
1、缓冲流为什么会提高IO流读写的效率?
答:因为缓冲流在创建对象流时,会创建一个默认长度的缓冲区数组,通过缓冲区读写,减少访问系统的次数,从而提高IO流的读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:当读和写操作中字符的编码格式不同时,会出现写入乱码问题,通过转换流解决,指定对应的编码格式和解码格式,通过InputStreamReader/OutputStreamWriter的构造方法让他们的编码集相同,就可以够解决乱码问题。
3、序列化流中的serialVersionUID的作用
答:用来固定序列号,防止因修改.class文件发生序列化改变,反序列化时抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答:按照格局分IO流可分为字节流和字符流
按照流向分IO流可分为输入流和输出流
在此基础上,又因不同的需求可以分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等。这些流都继承了各自父类Reader/Writer的成员方法,其中缓冲流中的BufferedReader、和BufferedWriter拥有自己特有的成员方法readLine()和nextLine(),打印流拥有自己特有的方法println()和print()。缓冲流的作用是增强流的读写速度,转换流的存在是为了实现不同的编码表之间内容的转换。转换流:用于解决编码和解码过程中因为格式不一致出现的乱码问题,通过指定相应的编码格式,解决乱码问题。序列化流中用一个字节序列表示一个对象,用于存储对象信息,另一种创建对象的方式。
作者:
林奕全
时间:
2019-4-1 22:02
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流里面有一个缓冲区数组,每次读写数据的时候都会先把数据先保存在缓冲区数组里,然后再进行返回.一次返回一个数组,比一次返回几个字节的方式快,读写效率也更高.
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
(1.)在编码和解码的方式不一致的时候会发生乱码.
(2.)当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,使用IDEA默认编码格式UTF-8读取文件时就会出现乱码.
解决:保证编码和解码的字符集方式保持一致就不会出现乱码
3、序列化流中的serialVersionUID的作用
作用:保证序列号唯一,不会被覆盖更改
4、请根据自己的语言表述IO流的体系
IO流分为两个方向:类型和流向
1.类型又分为:字节流和字符流
流向又分为:字节输入流和字节输出流;字符输入流和字符输出流
2.我们无论使用什么样的流对象,底层传输的始终是二进制数据.所以字节流可以处理任何数据类型的文件.字符流只可以处理文本类型的文件.
3.字节流和字符流有各自的增强功能在读取的时候能够使用更加高效的缓冲流作为流对象传输,读写速度更快.
又有可以转换编码格式的转换流,解决出现乱码的问题.
4.序列化流和反序列化流,可以在文本和对象中来回读写.
序列化流可以将对象作为文件持久化存储.
反序列化流可以将文本文件重构成为一个对象,进行读取.
作者:
叶振鹏
时间:
2019-4-1 22:54
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流又称高效流,我们在读写数据时会在内存中创建缓冲区,通过缓存区读写,减少了系统IO的次数,提高了效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
使用的字符集不一样导致的乱码,使用转换流可以按指定的编码方式来读写,
3、序列化流中的serialVersionUID的作用
答:
生成序列化号,校验序列化对象和反序列化是否匹配。
类在被序列化后会自动生成序列号,如果类的内容被修改那么会重新再生成一个新的序列号,
我们在反序列化操作时会进行校验,必须要保证序列号一样才会反序列化,否则会报异常。
4、请根据自己的语言表述IO流的体系
IO流是数据间的流动,分为输入流和输出流
输入流是把其他设备中的数据读取到内存中
输出流是把内存中的数据写出到其它设备中
基本流有:字节输出流(OutputStream)字节输入流(InputStream)
字符输出流(Reafer) 字符输入流(Writer)
缓冲流有:字节输出缓冲流(BufferedOutputStream)字节输入缓冲流(BufferedInputStream)
字符输出缓冲流(BufferedReafer) 字符输入缓冲流(BufferedWriter)
转换流有:输出转换流(OutputStreamReafer) 输入转换流(InputStreamWriter)
序列化流有:序列化流(ObjectOutputStream) 反序列化(ObjectInputStream)
打印流:PrintStream
作者:
叶彬彬
时间:
2019-4-1 23:08
1、缓冲流为什么会提高IO流读写的效率?
在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
发生乱码:当编码规则和解码规则不一致时,产生乱码
解决方法:保证编码规则和解码规则一致
3、序列化流中的serialVersionUID的作用
用于验证序列化的对象和对应类是否版本匹配
4、请根据自己的语言表述IO流的体系
从基础流分为输入流和输出流
输入流:字节输入流,字符输入流
输出流:字节输出流,字符输出流
在基础流之上创建了缓冲流,转换流,序列化流,打印流
作者:
廖艺铭
时间:
2019-4-1 23:40
1、缓冲流为什么会提高IO流读写的效率?
缓冲流提高IO流读写效率的原理:
创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的
?
产生乱码原因:编解码方式不一致,比如保存文件时采用GBK编码,而读取文件时采用UTF-8进行解码,导致乱码
解决:使用转换流InputStreamReader、OutputStreamWriter,可以指定字符集,以保证编解码方式一致
3、序列化流中的serialVersionUID的作用
作用:Serializable 接口给需要序列化的类,提供了一个序列版本号。 serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配
4、请根据自己的语言表述IO流的体系
基本流:分为字节流和字符流,分别以InputStream、OutputStream和Reader、Writer为超类
缓冲流:分为字节缓冲流BufferedInputStream、BufferedOutputStream
和字符缓冲流BufferedReader、BufferedWriter
转换流:InputStreamReader、OutputStreamWriter
序列化流:ObjectInputStream、ObjectOutputStream
打印流:PrintStream
作者:
王旭艺
时间:
2019-4-2 08:18
1、缓冲流为什么会提高IO流读写的效率?
缓冲流是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
由于IDEA的设置,都是默认的UTF-8编码,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。在读取时使用序列化流转码,转成与文件相同的编码
3、序列化流中的serialVersionUID的作用
serialVersionUID 的目的在于验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
IO流包括基本IO流和高效流、转化流、序列化、打印流
基本IO流有:字节输入输出流、字符输入输出流;
高效流也称缓冲流:也有字节、字符的输入输出流;
转化流:有两个InputStreamReader和OutputStreamWriter,当需要指定编码进行操作时使用
序列化:当想对对象进行IO流存储时用到的ObjectOutputStream和ObjectInputStream
打印流:对输出流的包装
作者:
唐彬桂
时间:
2019-4-2 08:43
1、缓冲流为什么会提高IO流读写的效率?
因为他会先创建一个缓冲区数据,当你要输出或者输入的时候,
他会先进入缓冲区数据,然后通过缓冲区输入或者输出。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
由于编码表的不同,当读取的时候使用的编码表与写入的时候使用的编码表不同的时候,
会发生乱码问题,解决方法就是让读取的编码表跟写入的编码表相同,就不会出现乱码的情况。
3、序列化流中的serialVersionUID的作用
作用:当对象有变化的时候,也可以进行序列化,反序列化
4、请根据自己的语言表述IO流的体系
输出流:从内存写出数据到其他设备
输入流:把数据从其他设备读取到内存
缓冲流:提高读写的效率
序列化流:将对象转换成文件,进行持久化存储
转换流:就是将不同的编码转换成相同的编码进行读写
打印流:将你想要输出的内容打印输出
作者:
JavaEE06蒋才东
时间:
2019-4-2 08:49
1、缓冲流为什么会提高IO流读写的效率?
在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码与解码不一致时,会发生乱码
按编码方式进行解码
3、序列化流中的serialVersionUID的作用
验证序列化的对象和对应类是否版本匹配
4、请根据自己的语言表述IO流的体系
IO流按照流向分分为输入流和输出流
IO流按照格局分分为字节流和字符流
在这些的基础上,又因不同的需求分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等这些流都继承了各自父类的成员方法
缓冲流中的BufferedReader拥有自己特有的成员方法readLine()方法
BufferedWriter拥有自己特有的成员方法newLine()方法
打印流拥有自己特有的方法println()方法和print()方法
缓冲流的作用是增强流的读写速度
转换流的存在是为了实现不同的编码表之间内容的转换
作者:
LIUXIAOMING
时间:
2019-4-2 18:54
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流在IO流读写过程中,会通过缓冲区进行数据的统一读写,降低IO读写数据的次数,提高效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在读写过程中,解码和编码所用的编码表格式不一致时,会发生乱码问题,因为所参照的编码表规则不一样。
因此在解码编码时,要保证编码表格式一致。
3、序列化流中的serialVersionUID的作用
序列化流中的serialVersionUID保证对象创建后对对象的定义进行修改,该对象的UID值也不会发生改变,这样在反序列化是就不会出现InvalidClassException 异常。
4、请根据自己的语言表述IO流的体系
IO流的基本流为字节输入输出流和字符输入输出流,但是该基本流方法效率较低。
为了提高效率,在该基本流的基础上开发了字节缓冲流和字符缓冲流,提高效率,
因为编码解码所用的字符集有很多类型,因此为了解决不同字符集间编码的乱码问题,在IO基本流的基础上开发了 InputStreamReader类和OutputStreamWriter类解决该问题。
为了将JAVA中的对象进项持久化存储,在IO基本流的基础上开发了ObjectOutputStream类和ObjectInputStream类对对象进行存储和解析。
为了能够方便地打印各种数据类型的值,在IO基本流的基础上开发了PrintStream类,进行数据打印,平时敲代码所用的System.out.println和System.out.print就是来自于该类。
作者:
黄杰南
时间:
2019-4-2 19:56
1、缓冲流为什么会提高IO流读写的效率?
JVM建立缓冲流对象时,会同时建立一个缓冲区数组,读写时先将数据存入缓冲区数组,待其存满后再将数据返回,这样一来减少了内存和硬盘的IO次数,也即提高了读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当文件的编码格式和解码格式不一致时会发生乱码问题,例如若一个文件编码时用的是GBK格式,而解码时采用的是utf8格式,则显示出来的就是乱码;
可以通过转换流InputStreamReader类和OutputStreamWriter类搭建字符和字节的桥梁,在创建这两个类的对象时指定编码的格式,即可正确的读写文件。
3、序列化流中的serialVersionUID的作用
若某个类的某些对象被序列化后,又对这个类进行了修改,则在反序列化的时候会重新计算序列版本号,前后的序列版本号不一致则反序列化时会抛出 InvalidClassException 异常。
因此在类中加入成员变量serialVersionUID,用static、final和long修饰,这样即使之后修改了类中的内容,序列版本号也不会被修改,因此可以顺利进行反序列化。
4、请根据自己的语言表述IO流的体系
IO流大体以两种划分方式为根本:输入与输出、字节与字符,两两组合成了4种流的根类,也即InputStream、OutputStream、Reader和Writer。在这4个根类之下,又因功能需求的不同,而分别有几个子类,如为解决IO的效率问题的类:缓冲流(BufferedInputStream等);为解决字符和字节转换问题的类:转换流(InputStreamReader、OutputStreamWriter);为解决对象序列化问题的类:ObjectInputStream;还有其他如过滤流(FilterInputStream等)、文件流(FileInputStream等)、管道流(PipedInputStream等)、音频流(AudioInputStream等)等
作者:
蓝建华
时间:
2019-4-2 20:10
1、缓冲流为什么会提高IO流读写的效率?
答:在创建缓冲流对象的时候会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读书效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:用和文件不符合的编码的去读取就会乱码,可以使用 InputStreamReader来指定编码来打印,或者使用outputStreamWriter对文件进行重新指定编码
3、序列化流中的serialVersionUID的作用
答:解决该类的序列版本号与从流中读取的类描述符的版本号不匹配
4、请根据自己的语言表述IO流的体系
答;IO流是用来处理设备之间的数据传输
按流向分为:输出流和输入流
操作数据分为:字节流和字符流
java对数据的操作是通过流
作者:
小翔vvvv
时间:
2019-4-2 21:10
叶凌青
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流有缓冲区,可以减少java程序和jvm以及os的交互次数,从而提高了效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
编码的格式和解码的格式不一致的情况下会发生乱码问题。使用转换流,可以使用我们自定义的编码解码格式,可以解决乱码问题。
3、序列化流中的serialVersionUID的作用
在对数据进行修改后,想正常执行反序列化流就必须先执行序列化流,否则会抛出异常,不过如果设置固定serialVersionUID,
那么即使对数据进行修改,在不运行序列化流的情况下也可以执行反序列化流。
4、请根据自己的语言表述IO流的体系
IO指的是Input/Output,IO流:输入输出流。 我们称为数据流。
在Java程序中,对于数据的输入 / 输出操作都是以流的方式进行的;
按流向分:输入流和输出流;
按格局分:字节流个字符流。
作者:
卢春旭
时间:
2019-4-2 21:10
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流有一个缓冲区,这个缓冲区一次性存储多次要操作的数据,减少java程序和jvm、os交互的次数,所以会提高效率,如果没有指定缓冲区的大小的话默认情况下是8192字节。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
写入的编码格式跟打开文件时的解码格式不一致就会发生写入乱码问题。编码的格式和解码的格式不一致就会产生乱码问题。使用转换流就能够自定义读取文件的解码格式或者写入文件的编码格式,让不一样的格式变成一样就可以解决乱码问题。
3、序列化流中的serialVersionUID的作用
serialVersionUID就是序列号,在序列化流中程序会根据代码给class文件和生成的文件匹配一样的序列号,在反序列化要读取这些信息的时候会比较这两个的序列号是否一样,如果一样就能顺利读取,如果不一样就会抛出异常。我们可以使用静态关键字static 和Final关键字去修饰serialVersionUID,赋值一个固定的常量,这样不管对象的类如何变化序列号都不会改变,也就不会发生反序列化异常。
4、请根据自己的语言表述IO流的体系
1、IO流中有4个基类:1、字节输入流 InputStream 2、字符输入流 Reader 3、字节输出流 OutputStream 4、 字符输出流。
2、按照流向分:输出流和输入流。
3、按照数据传输单位分:字节流:以字节为单位传输数据的流 字符流:以字符为单位传输数据的流。
作者:
陈鉴
时间:
2019-4-2 21:15
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
陈鉴
时间:
2019-4-2 21:16
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
张广发
时间:
2019-4-2 21:39
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流在创建流对象的时候,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,以此来提高读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
由于编码表的不同,当读取的时候使用的编码表与写入的时候使用的编码表不同的时候,会发生乱码问题,解决方法就是让读取的编码表跟写入的编码表相同,就不会出现乱码的情况。
3、序列化流中的serialVersionUID的作用
答:
作用在于固定序列号,让它不会因为.class修改发生序列变化,当版本发生变化时,反序列化会抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答;
IO流体系可按照最小单位分为字符流、字节流,根据流向可分为输入流和输出流
在这四类基础流之上还有提高数据吞吐能力的缓冲流、解决编解码乱码问题的转换流,以及序列化流,序列化流的作用是将对象信息永
作者:
沈松宏
时间:
2019-4-2 21:47
1、缓冲流为什么会提高IO流读写的效率?
会在内存中创建缓冲区,内存间的读写效率最高
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
使用idea)读写GBK码表编写的文件会出现乱码,编码和解码的规则不一致,idea默认使用的是utf-8的码表,使用转换流中的inputstreamreader指定GDK的码表方式来读
3、序列化流中的serialVersionUID的作用
做标记
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
沈松宏
时间:
2019-4-2 21:47
1、缓冲流为什么会提高IO流读写的效率?
会在内存中创建缓冲区,内存间的读写效率最高
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
使用idea)读写GBK码表编写的文件会出现乱码,编码和解码的规则不一致,idea默认使用的是utf-8的码表,使用转换流中的inputstreamreader指定GDK的码表方式来读
3、序列化流中的serialVersionUID的作用
做标记
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
李煜霖
时间:
2019-4-3 19:05
1.什么是输入流?什么是输出流?
输入流是:把数据从其他设备上读取到内存中
输出流是:把数据从内存中读取到其他设备上
2.输入流读取有几种方式,输出流写出有几种方式?
输入流的读取:字节输入流,字符输入流
输入流:字节输入流,字符输出流
3.字符流和字节流的区别?
字符流是:以字符为单位,读写数据的流
自己流是:以字节为单位,读写数据的流
作者:
李煜霖
时间:
2019-4-3 21:03
1、缓冲流为什么会提高IO流读写的效率?
因为在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO
次数,从而提高读写的效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
文件的储存规则和解析规则不一样的时候就会发生写入乱码
我们通过创建InputStreamReader流对象,指定从字符流到字节流的桥梁(指定规则),从而解决乱码问题
3、序列化流中的serialVersionUID的作用
序列化流中的serialVersionUID的作用是:验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
IO流包括:字节输出流,字节输入流,字符输出流,字符输入流
字节输出缓冲流,字节输入缓冲流,字符输出缓冲流,字符输入缓冲流分别是这几个IO流的高效流
还包括正序列化:ObjectOutputStream
反序列化:ObjectIntputStream
正序列化和反序列化可以将对象存储到文件中,也可以将文件中的对象读取出来
打印流:可以改变打印流向
作者:
李煜霖
时间:
2019-4-3 21:06
1、缓冲流为什么会提高IO流读写的效率?
因为在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO
次数,从而提高读写的效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
文件的储存规则和解析规则不一样的时候就会发生写入乱码
我们通过创建InputStreamReader流对象,指定从字符流到字节流的桥梁(指定规则),从而解决乱码问题
3、序列化流中的serialVersionUID的作用
序列化流中的serialVersionUID的作用是:验证序列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流的体系
IO流包括:字节输出流,字节输入流,字符输出流,字符输入流
字节输出缓冲流,字节输入缓冲流,字符输出缓冲流,字符输入缓冲流分别是这几个IO流的高效流
还包括正序列化:ObjectOutputStream
反序列化:ObjectIntputStream
正序列化和反序列化可以将对象存储到文件中,也可以将文件中的对象读取出来
打印流:可以改变打印流向
作者:
黑马林伟明
时间:
2019-4-3 21:06
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
Wyt1935
时间:
2019-4-3 21:08
吴元陶:1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
陈鉴
时间:
2019-4-3 21:08
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。
通过转换流InputStreamReader和OutputStreamWriter可以根据指定的编码规则读取或写出。
3、序列化流中的serialVersionUID的作用
Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
可以将serialVersionUID写死,防止修改对象导致抛出一InvalidClassException异常。
4、请根据自己的语言表述IO流的体系
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
钟扬辉
时间:
2019-4-3 21:43
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,实在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,
减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在IDEA中,使用 FileReader 读取项目中的文本文件。由于IDEA的设置,都是默认的 UTF-8 编码,
所以没有任何 问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。
InputStreamReader类
转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定 的字符集将其解码为字符。
它的字符集可以由名称指定,也可以接受平台的默认字符集。
OutputStreamWriter类
转换流 java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符 编码为字节。
它的字符集可以由名称指定,也可以接受平台的默认字符集。
3、序列化流中的serialVersionUID的作用
目的在于验证序 列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流(
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
作者:
苏森鹏
时间:
2019-4-11 23:18
1、缓冲流为什么会提高IO流读写的效率?
缓冲流的基本原理,实在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,
减少系统IO次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
在IDEA中,使用 FileReader 读取项目中的文本文件。由于IDEA的设置,都是默认的 UTF-8 编码,
所以没有任何 问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。
InputStreamReader类
转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定 的字符集将其解码为字符。
它的字符集可以由名称指定,也可以接受平台的默认字符集。
OutputStreamWriter类
转换流 java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符 编码为字节。
它的字符集可以由名称指定,也可以接受平台的默认字符集。
3、序列化流中的serialVersionUID的作用
目的在于验证序 列化的对象和对应类是否版本匹配。
4、请根据自己的语言表述IO流(
(1)IO主要分为字节流、字符流以及他们的增强流;
(2)字节流包括输出流InputStream,输出流OutputStream及其他们的子类,常用的是FileOutputStream和FileInputStream这两个子类;
(3)字符流包括输入流Reader和输出流Writer及其他们子类,常用的是FileReader和FileWriter两个子类
(4)增强流包括缓冲流(字符字节及其输入输出共四类),转换流(输入和输出两种)序列流(输入输出)和打印输出流(输出);
a.缓冲流主要是用来提高读写效率的,其内部自带缓冲区,默认为8KB,可设置,对字符的读写提供了行读取和写入通用换行符;
b.转换流主要是用来解决字符文件的编码问题,可以指定字符编码对字符文件进行读写,避免乱码问题;
c.序列流主要是用来实现对象的序列化(将对象存储到文件中)和反序列化(从对象文件中直接读取对象信息,创建对象);
d.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2