JavaSE习题 第九章 输入输出流
问答题
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())!=-1) { 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 = 0; i < 10; 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())!=-1) { 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=0;i<10;i++) { bw.write(sc.nextInt()+"\n"); } bw.close(); BufferedReader br=new BufferedReader(new FileReader(new File("6.txt"))); for(int i=0;i<10;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流将一个文本文件倒置输出