Java(10)I/O输入/输出

1.Java中流的分类有哪些?

流从方向上看:一般分为输入流(InputStream)和输出流(OutputStream)两类。程序可以用输出流向文件写数据,用输入流从文件中读数据。而针对键盘只有输入流,针对屏幕只有输出流。从读取类型上分:一般分为字节流和字符流。字节流是从InputStream和OutputStream派生出来的一系列类,它以字节(byte)为基本处理单位。字符流是从Reader和Writer派生出的一系列类,它以16位的Unicode码表示的字符为基本处理单位。

2.字节流InputStream和OutputStream的子类分别有哪些?请举例说明其使用场景。与其对应的字符流分别有哪些?

字节流(以缩进的层次表示继承关系):

java.io.InputStream(抽象类)

    java.io.FileInputStream(通过指定文件路径的方式,将一个文件中的内容作为其他流的数据源,从而可使用流的方式对文件进行读操作)

    java.io.PipedInputStream(管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。管道输入流作为一个通信管道的接收端,管道输出端则作为发送端。管道流必须输入/输出并用,即在使用管道前,两者必须进行连接)

    java.io.ObjectInputStream(能够输入/输出对象的流称为对象流)

    java.io.ByteArrayInputStream(在字节数组和流之间搭建桥梁。ByteArrayInputStream的构造方法ByteArrayInputStream(byte[] buf)可以将字节数组构造成字节数组流的数据源,从而可以通过流的方式来读字节数组)

    java.io.FilterInputStream(重写了父类InputStream的所有方法,对其他输入/输出流进行特殊处理,使得它在读写数据的同时还可以对数据进行特殊处理。此外还提供了同步机制,使得某一时刻只有一个线程可以访问一个输入与输出流)

        java.io.DataInputStream(以统一方式读出或写入boolean、int、long、double等数据类型。此外,还提供了字符串读写的方法)

        java.io.BufferedInputStream(实现了带缓冲的过滤流,它提供了缓冲机制,把节点流“捆绑”到缓冲流上,可以提高读写效率)

        java.io.PushbackInputStream 

java.io.OutputStream(抽象类)

    java.io.FileOutputStream(通过指定文件路径的方式,将一个文件作为其他流的输出目的地,从而可使用流的方式对文件进行写操作)

    java.io.PipedOutputStream(管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。管道输入流作为一个通信管道的接收端,管道输出端则作为发送端。管道流必须输入/输出并用,即在使用管道前,两者必须进行连接)

    java.io.ObjectOutputStream(能够输入/输出对象的流称为对象流)

    java.io.ByteArrayOutputStream(可以将任意多字节的内容多次写入流中,最后整体转为一个字节数组)

    java.io.FilterOutputStream(重写了父类OutputStream的所有方法,对其他输入/输出流进行特殊处理,使得它在读写数据的同时还可以对数据进行特殊处理。此外还提供了同步机制,使得某一时刻只有一个线程可以访问一个输入与输出流)

        java.io.DataOutputStream(以统一方式读出或写入boolean、int、long、double等数据类型。此外,还提供了字符串读写的方法)

        java.io.BufferedOutputStream(实现了带缓冲的过滤流,它提供了缓冲机制,把节点流“捆绑”到缓冲流上,可以提高读写效率)

        java.io.PrintStream()(打印流,能在输出时自动完成两项功能:如果输出字符串,则完成字符的编码过程,如果有汉字,能将汉字自动转化为操作系统本身的字符集GBK;另外,如果其输出路径上接有缓冲流,当调用println方法或输出字符串中有换行标志时,则自动调用缓冲流的flush方法)         

与之对应的字符流  (以缩进的层次表示继承关系):                                                                      java.io.Reader

    java.io.InputStreamReader

    java.io.FileReader

    java.io.CharArrayReader

    java.io.PipedReader

    java.io.BufferedReader

    java.io.StringReader

    java.io.FilterReader

java.io.Writer

    java.io.OutputStreamWriter

    java.io.FileWriter     

    java.io.CharArrayWriter

    java.io.PipedWriter

    java.io.BufferedWriter

    java.io.StringWriter

    java.io.FilterWriter

    java.io.PrintWriter                

3.字节流与字符流的转化是怎样的?Java对此提供了那些支持?

字节流与字符流的转化:输入字节流转为字符流需要用到InputStreamReader的构造方法(InputStreamReader(InputStream in));输出字符路转为字节流需要用到OutputStreamWriter或PrintWriter的构造方法(OutputStreamWriter(OutputStream out)或PrintWriter(OutputStream out))。

4.Java中的过滤流(流的装配)有什么作用?请举例说明常用的过滤流。

作用:对其他输入/输出流进行特殊处理,能够在读写数据的同时对数据进行特殊处理,还提供了同步机制,使得某一时刻只有一个线程可以访问呢一个输入与输出流。常用的过滤流:FilterInputStream和FilterOutputStream.

5.什么是对象的序列化和反序列化?Java对此提供了哪些支持?

对象的序列化和反序列化:对象的串行化又称序列化,是将内存中的动态对象表达成为可以传输的串形式,而与之相反的过程称为反串行化或反序列化。Java提供的支持:Serializable接口作为类对象能够被序列化的标志。

6.Java的File类表示什么?有什么作用?

File类表示文件或者目录的路径的抽象表现形式。作用:可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建,删除等功能。

7.Java对文件的读写分别提供了哪些支持?

Java提供了FileInputStream类和FileReader类读文件,FileOutputStream类和FileWriter类写文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值