問答題
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流將一個文本文件倒置輸出
