Java第十四章作业

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

按流动方向分类:分为输入流和输出流
输入流:如System.in是一个InputStream类型输入流。
输出流:如System.out 是一个PrintStream类型输出流。
按读取类型分类:分为字节流和字符流
字节流:如System.in是一个InputStream类型字节流。
字符流:如new InputStreamReader(System.in)是一个字符流对象。
按发生的源头分类:分为节点流和过滤流类
节点流:直接操作目标设备对应的流 如文件流,标准输入输出流。
过滤流:继承带有关键字Filter的流 用于包装操作节点流,方便读写各种类型的数据。

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

InputStream的子类
FileInputStream 文件流
PipedInputStream 管道输入流,读取管道内容,多和PipedOutputStream一起用于多线程通信。
ObjectInputStream 用来恢复被序列化的对象。
ByteArrayInputStream 包含一个内存缓冲区,字节从中取出。
SequenceInputStream 是多种输入流的逻辑串联,从第一个输入流读取,直到最后一个输入流。
FilterInputStream 过滤流,在读写数据的同时还可以对数据进行特殊处理。
OutputStream的子类
FileOutputStream 文件流。
PipedOutputStream 管道流。
ObjectOutputStream 将对象序列化后写入指定地方。
ByteArrayOutputStream 在字节数组和流之间搭建桥梁。
SequenceOutputStream 是多种输入流的逻辑串联。
FilterInputStream 过滤流,在读写数据的同时还可以对数据进行特殊处理。

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

输入字节流转为字符流需要用到inputstreamReader的构造方法:
InputStreamReader(InputStream in)

InputStreamReader ins = new InputStreamReader(System.in);
InputStreamReader ins = new InputStreamReader(new FileInputStream(“test.txt”));

输出字符流转为字节流用到OutputStreamWriter或PrintWriter的构造方法:
OutputStreamWriter(OutputStream out)
PrintWriter(OutputStream out)

OutputStreamWriter outs = new OutputStreamWriter(new FileOutputStream(“test.txt”));

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

过滤流: BufferedInputStream和BufferedOutputStream, 缓存作用,用于装配文件磁盘、网络设备、终端等读写开销大的节点流,提高读写性能。

过滤流BufferedReader的使用:用于缓存字符流,可以一行一行的读。
PrintWriter的使用:可以向该字符流中写入Java基本数据类型,用于包装输出字符流类对象 。

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

串行化(Serialization):又称序列化,将实现了Seriallizable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象,后者又称反序列化。
串行化的目的:便于介质存储和网络传输。
使用ObjectInputStream类和ObjectOutputStream类。

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

在这里插入图片描述
在这里插入图片描述

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

import java.io.*;
public class OpenFile {
    public static void main(String args[]) throws IOException{
        try{                                        //创建文件输入流对象
            FileInputStream  rf = new FileInputStream("OpenFile.java");
            int n=512,c=0;
            byte buffer[] = new byte[n];
            while ((c=rf.read(buffer,0,n))!=-1 ){   //读取输入流
                System.out.print(new String(buffer,0,c));
            }            
            rf.close();                            //关闭输入流
        }
        catch (FileNotFoundException ffe){
            System.out.println(ffe);}
        catch (IOException ioe){
            System.out.println(ioe);
        }
   
}
import java.io.*;
public class Write1 {
    public static void main(String args[]){
        try{
            System.out.print("Input: ");
            int count,n=512;
            byte buffer[] = new byte[n];
            count = System.in.read(buffer);        //读取标准输入流
            FileOutputStream  wf = new FileOutputStream("Write1.txt");
                                                   //创建文件输出流对象
            wf.write(buffer,0,count);              //写入输出流
            wf.close();                            //关闭输出流
            System.out.println("Save to Write1.txt!");
        }
        catch (FileNotFoundException ffe){
            System.out.println(ffe);}
        catch (IOException ioe){
            System.out.println(ioe);} }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值