java I/O输入输出 作业

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

  1. 从流动方向上看:一般分为输入流和输出流
  2. 从读取类型上分:一般分为字节流和字符流
  3. 从发生的源头:分为节点流和过滤流类
  • 节点流:直接操作目标设备对应的流,如文件流,标准输入输出流。
  • 过滤流:继承带有关键字Filter的流,用于包装操作节点流,方便读写各种类型的数据。

在这里插入图片描述

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

字节流
InputStream和OutputStream是两个抽象类,代表输入和输出,其子类包括:

  • 文件流FileinputStreamFileOutputStream,作用在于作通过指定文件路径构造一个文件流,从而可以使用流的方式对文件进行读写的操作。

  • 字节数组流 ByteArrayInputStreamByteArrayOutputStream,起到在字节数组和流之间搭建桥梁的作用。

  • 管道流PipedInputStreamPipedOutputStream,通常用于将一个程序的输出连接到另一个程序的输入。输出流作为管道的发送端,输入流作为管道的接收端。使用前需要调用connect方法将输出流和输入流连接起来。

  • 对象流ObjectOutputStreamObjectInputStream,起到对象序列化和反序列化的作用,可以输入或输出对象。

  • 过滤流FilterInputStreamFilterOutputStream,是两个抽象类,对连接到的其他输人/输出节点流进行特殊处理。

在这里插入图片描述

字符流
Reader和Writer是两个抽象类,代表输入和输出,其子类包括:

  • 文件流FileReaderFileWriter
  • 字符数组流 CharArrayReaderCharArrayWriter
  • 管道流PipedReaderPipedWriter
  • 过滤流FilterReaderFilterWriter
  • PrintWriter
  • 字节流与字符流的转化InputStreamReaderOutputStreamWriter
    在这里插入图片描述

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

输入字节流转为字符流需要用到inputstreamReader的构造方法

InputStreamReader ins = new InputStreamReader(System.in);

输出字符流转为字节流用到OutputStreamWriter或PrintWriter的构造方法

PrintWriter os=new PrintWriter(socket.getOutputStream());
OutputStreamWriter outs = new OutputStreamWriter(new FileOutputStream(“test.txt”));

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

过滤流:继承带有关键字Filter的流,用于包装操作节点流,方便读写各种类型的数据
在这里插入图片描述

FileInputStream inputStream = new FileInputStream( "f1.txt" );
BufferedInputStream bufferedInputStream = new BufferedInputStream( inputStream );
FileOutputStream outputStream = new FileOutputStream( "f2.txt" ) ;
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream( outputStream ) ;
byte[] b=new byte[1024]; //代表一次最多读取1KB的内容
int length = 0 ; //代表实际读取的字节数
while( (length = bufferedInputStream.read( b ) )!= -1 ){
	//length 代表实际读取的字节数
	bufferedOutputStream.write(b, 0, length );}
//缓冲区的内容写入到文件
bufferedOutputStream.flush();
DataInputStream di = new DataInputStream(new BufferedInputStream(new FileInputStream(f))) 
System.out.println(di.readInt()); //读取整型,输出3
System.out.println(di.readDouble()); //读取浮点型,输出3.14
System.out.println(di.readUTF()); //读取字符串,输出hello
DataOutputStream do = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f))) 
do.writeInt(3);//写入整型
do.writeDouble(3.14);//写入浮点型
do.writeUTF(“hello”);//写入字符串
do.close();
PrintStream out = new PrintStream("other.txt");
// 将字符串“hello PrintStream”+回车符,写入到输出流中
out.println("hello PrintStream");
// 将0x41写入到输出流中,也就是写入字符'A'
out.write(0x41);
out.append('B');

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

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

Java提供了ObjectInputStream类和ObjectOutputStream

out.writeObject(this);//对象序列化
in.readObject();//对象反序列化

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

File类提供了文件(或目录)路径名字的抽象表示,该类主要用于文件和目录的创建、文件的查找和文件的删除等。

构造方法

File(File parent, String child);//通过给定的父抽象路径名和子路径名字符串创建一个新的File实例
File(String pathname) //通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例
File(String parent, String child) //根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

常用方法
public String getName()
返回由此抽象路径名表示的文件或目录的名称。

public String getPath()
将此抽象路径名转换为一个路径名字符串。

public boolean exists()
测试此抽象路径名表示的文件或目录是否存在。

public boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。

public boolean delete()
删除此抽象路径名表示的文件或目录。

public String[] list()
返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。

public String[] list(FilenameFilter filter)
返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。

public boolean mkdir()
创建此抽象路径名指定的目录。

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

读文件:FileInputStream / FileReader
写文件:FileOutputStream / FileWriter / PrintStream / PrintWriter
提供对文件的随机访问支持:RandomAccessFile,文件指针可以随意定位,可以向前访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值