A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、缓冲流为什么会提高IO流读写的效率?
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
3、序列化流中的serialVersionUID的作用
4、请根据自己的语言表述IO流的体系

63 个回复

倒序浏览
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.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。


回复 使用道具 举报
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                                                                        打印流
回复 使用道具 举报
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 类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式
回复 使用道具 举报
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.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
回复 使用道具 举报
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.打印输出流主要是用于将各种类型的数据以字符串形式输出到指定的目标例如控制台或某个文件。
回复 使用道具 举报
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-4 11:26
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:
缓冲流在创建流对象的时候,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,以此来提高读写效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
由于编码表的不同,当读取的时候使用的编码表与写入的时候使用的编码表不同的时候,会发生乱码问题,解决方法就是让读取的编码表跟写入的编码表相同,就不会出现乱码的情况。
3、序列化流中的serialVersionUID的作用
答:
作用在于固定序列号,让它不会因为.class修改发生序列变化,当版本发生变化时,反序列化会抛出InvalidClassException异常
4、请根据自己的语言表述IO流的体系
答;
IO流体系可按照最小单位分为字符流、字节流,根据流向可分为输入流和输出流
在这四类基础流之上还有提高数据吞吐能力的缓冲流、解决编解码乱码问题的转换流,以及序列化流,序列化流的作用是将对象信息永
回复 使用道具 举报
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-4 11:29
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:
        缓冲流会在内存创建一个默认大小的缓冲数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率;
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:
        产生情况:例如将默写数据按A规则进行存储,再按A规则进行解析,此时解析正常,但是如果按A规则存储,却按B规则进行解析,这个时候就会出现乱码问题;
        产生原因:编码和解码的方式不一致;
        解决方案:保证编解码的方式一致,即用转换流指定相同的编码表进行编解码;
3、序列化流中的serialVersionUID的作用
答:
        作用:指定类的序列号,令其保持不变;使得类的class文件发生改变后,再进行反序列化不会抛出序列化冲突异常;
4、请根据自己的语言表述IO流的体系
答:
        基本流:四种,字节输入输出流和字符流输入输出流;是对数据进行读写操作;
        高效流:四种,字节缓冲输入输出流和字符缓冲流输入输出流;是对基本流的增强,提高基本流的读写效率;
        转换流:两种,InputStreamReader类和OutputStreamWriter类;是字节流与字符流之间的转换流,能指定编码表进行编解码,防止出现乱码;
        序列流:两种,序列化流和反序列化流;是将对象保存为文件或将文件重构成对象的流;
        打印流:一种,PrintStream类;能够方便地打印各种数据类型的值;
回复 使用道具 举报
王佳盛
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
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
多次获取,一次导入
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
编写和编译格式不对 定义相同格式
3、序列化流中的serialVersionUID的作用
添加标记
4、请根据自己的语言表述IO流的体系
对数提供输入和输出。
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
缓冲流是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码,解码的规则不同时就会产生乱码问题,我们使用转换流InputStreamReader和OutputStreamWriter类来避免乱码问题.
3、序列化流中的serialVersionUID的作用
要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一个标记
当我们进行序列化和反序列化的时候,就会检测类上是否有这个标记,如果我们进行了序列化之后修改类再进行反序列化序列号就会改变,
反序列化就会报异常,serialVersionUID固定了序列号防止了这种情况
4、请根据自己的语言表述IO流的体系
分为四个基本流:字节输出,字节输入,字符输出,字符输出.这四个可以按照方向分为两类:输出流和输入流.
有四种加强版流:转换流,缓冲流,序列化流,打印流
转换流是基本流的强化版,基础流是普通人,转换流就是人穿上了铠甲
加强流的根本都是基础流
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
答:在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统io次数,从而提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
答:在使用IDEA时默认的UTF-8编码,但是在Windows系统默认的GBK编码,就会出现乱码;可以使用OutputStreamWriter类,使用指定的字符集将字符编码为字节
3、序列化流中的serialVersionUID的作用
答:用于验证序列化的对象和对应类是否版本匹配
4、请根据自己的语言表述IO流的体系
答:
字节流:InputStream(字节输入流)、OutputStream(字节输出流)
字符流:Reader(字符输入流)、Writer(字符输出流)
字节缓冲流:BufferedInputStream(字节缓冲输入流)、BufferedOutputStream(字节缓冲输出流)
字符缓冲流:BufferedReader(字符缓冲输入流)、BufferedWriter(字符缓冲输出流)
转换流:InputStreamReader、OutputStreamWriter
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?
因为缓冲流使用了缓冲区,缓冲区是一个数组,它可以减少程序读写硬盘的次数,一次性搬运一个数组长度的数据字节,提高读写的效率。
2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
当编码和解码的字符集不同时,就会发生乱码的问题。
3、序列化流中的serialVersionUID的作用
每个类在实现Serializable接口时,都会被赋予一个自动生成的序列号,用来在做序列化和反序列化的操作的时候来检测类是否被更改了。
4、请根据自己的语言表述IO流的体系
按数据流向分为两大类:输出流和输入流。
按数据类型分为两大类:字节流和字符流。
按照功能分为:缓冲流、转换流、打印流、序列化流。

回复 使用道具 举报
黄志斌:
1、缓冲流为什么会提高IO流读写的效率?
缓冲流在创建时会创建一个缓冲区数组,通过这个缓冲区来读写可以减少系统IO的次数,来达到提高效率的效果

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?
写入的字符编码和文件本身的字符编码不同,就会出现乱码问题,通过使用转换流指定编码方式来解决这个问题

3、序列化流中的serialVersionUID的作用
提供一个固定不变的序列号,避免序列化失败

4、请根据自己的语言表述IO流的体系
IO流按照流向分分为输入流和输出流
IO流按照格局分分为字节流和字符流
在这些的基础上,又因不同的需求分为不同的流:字节流、字符流、缓冲流、转换流、打印流、序列化流等
这些流都继承了各自父类的成员方法,其中缓冲流中的BufferedReader、和BufferedWriter拥有自己特有的成员方法readLine()和nextLine()以及打印流拥有自己特有的方法println()和print()。缓冲流的作用是增强流的读写速度,转换流的存在是为了实现不同的编码表之间内容的转换

回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?

我们在创建对象的时候,会创建一个内置的默认大小的缓冲数组,数据读写会通过缓冲区,减少IO的次数,从而提高读写效率;

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?

问题:当按一种编码规则编码而没有按这种规则解码就会出现乱码现象
解决:我们引入了转换流,可以指定数据读写传送数据的编码规则。

3、序列化流中的serialVersionUID的作用

作用:序列号在反序列化的时候会进行校验,必须保证序列号和反序列号一致,才可以反序列化。

4、请根据自己的语言表述IO流的体系

IO流有四种基础流
InputStream字节输入流和OutputStream字节输出流
reader字符输入流和writer字符输出流

又有四种缓冲增强流
BufferedInputStream字节缓冲输入流和BufferedOutputStream字节缓冲输出流
Bufferedreader字符缓冲输入流和Bufferedwriter字符缓冲输出流

两种字符转换流
InputStreamreader字符转换输入流和OutputStreamwriter字符转换输出流

两种序列化流
ObjectOutputStream序列化流和ObjectInputStream反序列化流

打印流
printStream
回复 使用道具 举报
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序列化的原始数据恢复为对象。
回复 使用道具 举报
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)的作用是方便打印各种数据类型的值;
回复 使用道具 举报
1、缓冲流为什么会提高IO流读写的效率?

缓冲流也叫高效流
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。       

2、我们在读写过程中,什么情况下会发生写入乱码问题?是怎样产生的?我们是如何解决的?

编写文本会以不同编码表呈现,再以改编码表转换成计算机能识别的二进制,
在读取文本时候不同的编码表解码的内容不同.只有用编写的编码表解码才不会出现乱码,
否则用非编码的编码表解析会出现乱码
例如编码用UTF-8编写        解码用GBK读取会出现乱码
解决方法解码与编码的编码表相同相同

3、序列化流中的serialVersionUID的作用

Serializable 接口给需要序列化的类,提供了一个序列版本号。 serialVersionUID 该版本号的目的在于验证序
列化的对象和对应类是否版本匹配


4、请根据自己的语言表述IO流的体系

IO流关于文件夹或者文件运用的
IO流关系到内存是以内存为对象拓展的运用
包含缓冲流( 字节流 字符流)
转换流
序列化流
打印流
关IO流的字符集和Propeties类

回复 使用道具 举报
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,能够方便的打印各种数据类型的值,是一种便捷的输出方式。
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 加入黑马