JavaSE习题 第九章 输入输出流

时间:2024-01-13 15:31:08

问答题

1.如果准备读取一个文件的内容,应该使用FileInputStream还是FileOutputStream?

FileInputStream

2.FileInputStream流的read()方法与FileReader流的read()方法有何不同?

FIleInputStream的read可以读一个字节,而FileReader中的read可以读一个字符

3.BufferedReader流能指向一个文件对象吗?

不能

4.ByteArrayOutputStream流怎样获取缓冲区的内容?

获取byte数组的字节单元

5.PipedInputStream类和PipedOutputStream类的主要用途是什么?

换线程进行管道输入输出

6.使用ObjectInputStream类和ObjectOutputStream有哪些注意事项?

保证对象是序列化的,要实现Serializable

7.怎样使用输入流和输出流及技术克隆对象?

8.使用RandomAccessFile类读写文件的好处是什么?

可以获取文件指针

作业题

1.编写一个应用程序,读取一个文本文件的内容。

public static void main(String[] args) throws IOException{
FileInputStream fis=new FileInputStream(new File("1.txt"));
int b;
while((b=fis.read())!=-) {
System.out.print((char)b);
}
fis.close();
}

2.编写一个应用程序,将用户键盘输入的10行文字存入文件

public static void main(String[] args) throws IOException{
FileWriter fw=new FileWriter("2.txt");
BufferedWriter bw=new BufferedWriter(fw);
String str;
Scanner sc=new Scanner(System.in);
for (int i = ; i < ; i++) {
str=sc.nextLine();
bw.write(str+"\n");
}
sc.close();
bw.close();
fw.close();
}

3.使用数组字符流将俄文字母写入内存,再从内存取出

public static void main(String[] args) throws IOException{
String eWen="Аа Бб Вв Гг Дд Ее Ёё Жж Зз Ии Йй Кк Лл Мм Нн Оо Пп Рр Сс Тт Уу Фф Хх Цц Чч Шш Щщ Ъъ Ыы Ьь Ээ Юю Яя";
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ByteArrayInputStream bais=new ByteArrayInputStream(eWen.getBytes());
int n;
while((n=bais.read())!=-) {
baos.write(n);
}
System.out.println(baos.toString());
}

4.编写一个应用程序,将用户从键盘输入的10个整数存入文件,再顺序读出

public static void main(String[] args) throws IOException{
BufferedWriter bw=new BufferedWriter(new FileWriter(new File("6.txt"))); Scanner sc =new Scanner(System.in);
for(int i=;i<;i++) {
bw.write(sc.nextInt()+"\n");
}
bw.close();
BufferedReader br=new BufferedReader(new FileReader(new File("6.txt")));
for(int i=;i<;i++) {
System.out.println(br.readLine());
}
br.close();
sc.close();
}

5.编写一个应用程序,要求将一个LinkedList<E>创建的对象写入文件,再读出一个LinkedList<E>对象,并遍历LinkedList<E>节点中的数据

    public static void main(String[] args) throws IOException, ClassNotFoundException{
LinkedList<String> ll=new LinkedList<>();
ll.add("name");
ll.add("age");
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File("testOOs.txt")));
oos.writeObject(ll);
oos.close(); ObjectInputStream ois=new ObjectInputStream(new FileInputStream(new File("testOOS.txt")));
LinkedList<String> ll2=(LinkedList<String>) ois.readObject();
System.out.println(ll2);
ois.close(); }

6.使用RandomAccessFile流将一个文本文件倒置输出