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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我们学习了字符流和字节流,请根据自己的理解回答下面问题:
1.什么是输入流?什么是输出流?
2.输入流读取有几种方式,输出流写出有几种方式?
3.字符流和字节流的区别?
4.JDK7之前,JDK7和JDK7之后对IO流异常的处理有什么变化?

7 个回复

倒序浏览
1.什么是输入流?什么是输出流?
(1)输入流是指从硬盘或可持久化存储设备到内存的字节数据流;
(2)输出流是指从内存到硬盘或者可持久化设备的字节数据流。
2.输入流读取有几种方式,输出流写出有几种方式?
(1)输入流有三种读方法,按字节读取,按字节数组读取,按字节数组指定长度读取;字节读取速度较慢,通常使用大小为1024倍数的字节数组进行接收数据;
(2)输出流有三种写方式,按照字节写入,按字节数组写入和按照字节数组指定长度写入,字节写入速度较慢,通常使用大小为1024倍数的字节数组进行写入数据。
3.字符流和字节流的区别?
(1)字符流是字节流加上字符编码形成,最终还是会转换为字节流进行数据传输
(2)字符流可以解决字符编码的问题,字节流不行,字符流可以进行字符/字符串和字节数据之间的转码,开发者对文件读写时,直接传递或接收字符数据即可。
4.JDK7之前,JDK7和JDK7之后对IO流异常的处理有什么变化?
(1)JDK7之前,使用完流对象后,需要手动关闭流资源;
(2)JDK7之后,流对象实现了AutoCloseable接口,使用try-with-resource语句处理流异常,使用完流对象后,可以自动关闭流资源。

点评

顶  发表于 2018-11-6 16:19
加1  发表于 2018-11-6 16:17
加1  发表于 2018-11-6 16:16

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
1.什么是输入流?什么是输出流?
(1)输入流: 从硬盘读取数据到内存中
(2)输出流: 从内存写出数据永久存储到硬盘中
2.输入流读取有几种方式,输出流写出有几种方式?
数组长度规范为 1024 的倍数
(1)输入流: 读取单个(字节/字符)数据、使用(字节/字符)数组循环读取
(2)输出流: 写出单个(字节/字符)数据、使用(字节/字符)数组循环写出
3.字符流和字节流的区别?
(1)字符流是以字符为单位的,用来读写数据
(2)字节流是以字节为单位的,用来读写数据
4.JDK7之前,JDK7和JDK7之后对IO流异常的处理有什么变化?
(1)JDK7之前用捕获处理 try...catch...finally 代码块,需要手动关闭资源,此前 try 没有括号
(2)JDK7之后在原有的基础上,优化 try-with-resource ,try()括号内可创建流对象,多个流对象用分号分隔,语句结束资源自动关闭
(3)JDK9 try()括号内直接放入流对象名,多个流对象用分号隔开

评分

参与人数 1技术分 +1 收起 理由
厦门校区 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.        什么是输入流?什么是输出流?
答:根据数据的流向分为输入流和输出流。流是从源到目的地的字节的有序序列。在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。
输入流:把数据从其他设备上读取到内存中的流。能够读取一个字节序列的对象就称作一个输入流。
输出流:把数据从内存中写到其他设备上的流。能够进行基本类型的写入操作,写出去的文件仍然是以字节的形式出现的。
2.输入流读取有几种方式,输出流写出有几种方式?
(1)        输入流有三种读方式:①从此输入流中读取数据的下一个字节。②从此输入流中将最多len个字节的数据读入一个byte数组中。③从此输入流中将最多b.length个字节的数据。
(2)        输出流有三种写方式:①将指定的字节写入此文件输出流。②将b.length个字节从指定byte数组写入此文件输出流中。③将指定byte数组中从偏移量off开始的len个字节写入此文件输出流。
3.字符流和字节流的区别?
答:当使用字节流读取文本文件时,可能会有一个小问题,就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。
字节流是由字节组成的,字符流是由字符组成的。Java里字符由两个字节组成,字节是最基本的。字符流处理的单元为2个字节的Unicode字符,可操作字符、字符数组或字符串,而字节流处理单元为1个字节,可操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码。
4.JDK7之前,JDK7和JDK7之后对IO流异常的处理有什么变化?
JDK7版本是try(),而之前是try{}。能够写在try(...)的括号里面的类对象必须实现AutoCloseable 接口,这样try(...)里面的对象执行完代码块{...}里面的内容后,会自动调用自己的close()方法去关流(即大括号里面的内容执行完毕后小括号里面的对象会自动关闭),所以FileInputStream和FileOutputStream都是实现了AutoCloseable 接口的。
因为public class FileInputStream extends InputStream
public abstract class InputStream implements Closeable
public interface Closeable extends AutoCloseable
所以它们都实现了AutoCloseable接口。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马