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.
- 读写原始数据,一般采用什么流?(AC )
A InputStream
B DataInputStream
C OutputStream
D BufferedInputStream - 为了提高读写性能,可以采用什么流?( DF)
A InputStream
B DataInputStream
C BufferedReader
D BufferedInputStream
E OutputStream
F BufferedOutputStream - 对各种基本数据类型和String类型的读写,采用什么流?( AD)
A DataInputStream
B BufferedReader
C PrintWriter
D DataOutputStream
E ObjectInputStream
F ObjectOutputStream - 能指定字符编码的I/O流类型是:(BH )
A Reader
B InputStreamReader
C BufferedReader
D Writer
E PrintWriter
F ObjectInputStream
G ObjectOutputStream
H OutputStreamWriter - File类型中定义了什么方法来判断一个文件是否存在?( D)
A createNewFile
B renameTo
C delete
D exists - File类型中定义了什么方法来创建一级目录?( CD)
A createNewFile
B exists
C mkdirs
D mkdir
File类的mkdir方法根据抽象路径创建目录;File类的mkdirs方法根据抽象路径创建目录,包括创建必需但不存在的父目录
- 对文本文件操作用什么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();
}
}
}
}