Io流

1.1.
什么是IO流?
它是一种数据的流从源头流到目的地。比如文件拷贝,输入流和输出流都包括了。输入流从文件中读取数据存储到进程(process)中,输出流从进程中读取数据然后写入到目标文件。

1.2.
字节流和字符流的区别。
字节流在JDK1.0中就被引进了,用于操作包含ASCII字符的文件。JAVA也支持其他的字符如Unicode,为了读取包含Unicode字符的文件,JAVA语言设计者在JDK1.1中引入了字符流。ASCII作为Unicode的子集,对于英语字符的文件,可以使用字节流也可以使用字符流。

1.3.
.
Java中流类的超类主要由那些?
java.io.InputStream
java.io.OutputStream
java.io.Reader
java.io.Writer
1.4.
FileInputStream和FileOutputStream是什么?
这是在拷贝文件操作的时候,经常用到的两个类。在处理小文件的时候,它们性能表现还不错,在大文件的时候,最好使用BufferedInputStream (或 BufferedReader) 和 BufferedOutputStream (或 BufferedWriter)
1.5.
什么是java序列化,如何实现java序列化?
答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。
可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,
implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造
一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以
将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

1.6.
选择
1.计算机处理的数据最终分解为▁▁的组合。
A 0
B 数据包
C 字母
D 1
2.计算机处理的最小数据单元称为▁▁。
A 位
B 字节
C 兆
D 文件
3.字母、数字和特殊符号称为▁▁。
A 位
B 字节
C 字符
D 文件
4.▁▁文件流类的 close 方法可用于关闭文件。
A FileOutputStream
B FileInputStream
C RandomAccessFile
D FileWrite
5.RandomAccessFile 类的▁▁方法可用于从指定流上读取整数。
A readInt
B readLine
C seek
D close
6.RandomAccessFile 类的▁▁方法可用于从指定流上读取字符串。
A readInt
B readLine
C seek
D close
7.RandomAccessFile 类的▁▁方法可用于设置文件定位指针在文件中的位置。
A readInt
B readLiIne
C seek
D close
8.在FilterOutputStream类的构造方法中,下面哪个类是合法:
A File
B InputStream
C OutputStream
D FileOutputStream

【答案】
1.难度:容易答案:AD 知识点:计算机最终能处理的数据只能为 0 和 1。
2.难度:容易答案:B 知识点:计算机处理的最小数据单元是字节。

3.难度:容易答案:C 知识点:字符的概念。
4.难度:适中答案: ABC 知识点:FileOutStream、FileInputStream、RandomAccessFile
文件流类的 close 方法可用于关闭文件。
5.难度:适中答案:A 知识点:readInt方法的使用。
6.难度:适中答案:B 知识点:readLIne方法的使用。
7.难度:适中答案:C 知识点:seek 方法的使用。
8.难度:适中答案:C 知识点:在FilterOutputStream类中只有一种结构:public
FilterOutputStream(OutputStream)。

1.7.

  1. 读写原始数据,一般采用什么流?(AC )
    A InputStream
    B DataInputStream
    C OutputStream
    D BufferedInputStream
  2. 为了提高读写性能,可以采用什么流?( DF)
    A InputStream
    B DataInputStream
    C BufferedReader
    D BufferedInputStream
    E OutputStream
    F BufferedOutputStream
  3. 对各种基本数据类型和String类型的读写,采用什么流?( AD)
    A DataInputStream
    B BufferedReader
    C PrintWriter
    D DataOutputStream
    E ObjectInputStream
    F ObjectOutputStream
  4. 能指定字符编码的I/O流类型是:(BH )
    A Reader
    B InputStreamReader
    C BufferedReader
    D Writer
    E PrintWriter
    F ObjectInputStream
    G ObjectOutputStream
    H OutputStreamWriter
  5. File类型中定义了什么方法来判断一个文件是否存在?( D)
    A createNewFile
    B renameTo
    C delete
    D exists
  6. File类型中定义了什么方法来创建一级目录?( CD)
    A createNewFile
    B exists
    C mkdirs
    D mkdir

File类的mkdir方法根据抽象路径创建目录;File类的mkdirs方法根据抽象路径创建目录,包括创建必需但不存在的父目录

  1. 对文本文件操作用什么I/O流?(AD )
    A FileReader
    B FileInputStream
    C RandomAccessFile
    D FileWriter

1.8.
利用字节流完成一个影音视频的复制,利用字符流完成一个文本文件的复制。写出代码

package com.jp.buffer;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferDemo3 {
	public static void main(String[] args) {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		try {
			fis = new FileInputStream("e://01.mp4");
			fos = new FileOutputStream("d://copy.mp4");
			
			bis = new BufferedInputStream(fis);
			
			bos = new BufferedOutputStream(fos);
			
			byte[] b = new byte[1024];
			
			int len = 0;
			while((len = bis.read(b)) != -1){
				bos.write(b, 0, len);
				bos.flush();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(fis != null){
				try {
					fis.close();
				} catch (IOException e) {
					throw new RuntimeException("出问题啦");
				}
			}
			if(fos != null){
				try {
					fos.close();
				} catch (IOException e) {
					throw new RuntimeException("出问题啦");
				}
			}
			if(bis != null){
				try {
					bis.close();
				} catch (IOException e) {
					throw new RuntimeException("出问题啦");
				}
			}
			if(bos != null){
				try {
					bos.close();
				} catch (IOException e) {
					throw new RuntimeException("出问题啦");
				}
			}
		}
		
	}
}

package com.jp.buffer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferDemo2 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			br = new BufferedReader(new FileReader( new File("E://a.txt")));
			bw = new BufferedWriter(new FileWriter(new File("D://copy.txt")));
			String line = null;
			while((line = br.readLine()) != null){
				bw.write(line);
				bw.newLine();//换行
				bw.flush();//刷新
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(br != null){
				br.close();
			}
			if(bw != null){
				bw.close();
			}
		}
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值