日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

I/O流(二)

發布時間:2024/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 I/O流(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常用I/O類的層次

1、InputStream
1.1、FileInputStream 字節流
1.2、FilterInputStream
1.2.1、BufferedInputStream
1.2.2、DataInputStream 讀取基礎數據類型 平臺無關

2、OutputStream
2.1、FileOutputStream
2.2、FilterOutputStream
2.2.1、BufferedOutputStream
2.2.2、DataOutputStream 寫入基礎數據類型 與平臺無關

3、Reader
3.1、BufferedReader 提供讀一行
3.2、InputStreamReader 提供讀字符而非字節
3.2.1、FileReader 直接使用文件名,無需組合

4、Writer
4.1、BufferedWriter
4.2、OutputStreamWriter
4.2.1、FileWriter 直接使用文件名,無需組合
4.3、PrintWriter 如屏幕輸出一樣方便

5、File

有關I/O的兩種觀點:

文本的觀點:不支持隨機訪問 BufferedReader
二進制的觀點(字節):支持隨機訪問 InputStream(圖片,視頻等)

文本文件的讀寫:

* PrintWriter(FileOutputStream) * 提供了豐富的輸出格式化。默認編碼方式 * FileWriter * 需顯式換行。默認編碼 * BufferedWriter(OutputStreamWriter) * 可指定編碼 * BufferredReader(InputStreamReader) * 可指定編碼

從文件讀入信息,然后在輸出到另一個文件

/** //構建輸入流 BufferedReader bs=new BufferedReader(new InputStreamReader(new FileInputStream("d:/text01.txt"))); //從d:/text01.txt讀入//構建輸出流BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:/test02.txt"))); //寫入d:/text02.txt // 等價于 PrintWriter pw=new PrintWriter(new FileOutputStream("d:/test02.txt")); //寫信息 for(;;){String s=br.readLine();if(s == null){break;}bw.write(s);// pw.println(s); } bw.flush(); //pw.flush();**/

二進制文件的讀寫

* 直接操作字節 * FileInputStream FileOutputStream * 與平臺無關的讀寫 * DataInputStream DataOutputStream(支持隨機訪問) * 與編碼有關 * 先把串轉換為byte[ ]

將一張圖片保存成txt模式,通過程序將它輸出為一張圖片格式的文件(文件存儲額的格式對文件本身的內容不會發生任何的影響)

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;public class picture {public static void main(String[] args) {// TODO Auto-generated method stubtry {InputStream is=new FileInputStream("F:/私人物品劉夢冰/學習資料/exercise/beauty.txt");//構建輸入流OutputStream os=new FileOutputStream("F:/私人物品劉夢冰/學習資料/exercise/beauty.jpg");//構建輸出流byte[] buf=new byte[1024];for (;;) {//寫信息int n = is.read();if (n==-1) break; // os.write(n); //一個字節一個字節的讀,然后一個字節一個字節的往外寫,讀一個字節寫一個字節os.write(buf, 0, n);//從0開始寫,寫到n;把所有的內容全部讀到byte數組中之后再往外寫}os.flush();os.close();is.close();}catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } }

運行結果:

產生10*PI個數,寫入文件中,然后再從該文件中隨機讀取一個數

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;//產生10*PI個數,寫入文件中,然后再從該文件中隨機讀取一個數 public class DataOutput {public static void main(String[] args) {// TODO Auto-generated method stub//創建輸出流try {DataOutputStream dos = new DataOutputStream(new FileOutputStream("F:/私人物品劉夢冰/學習資料/exercise/dataOutputStream.dat"));for (int i = 0; i < 10; i++) {double d=Math.PI*i;dos.writeDouble(d); }dos.flush();dos.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//創建輸入流try {DataInputStream dis = new DataInputStream(new FileInputStream("F:/私人物品劉夢冰/學習資料/exercise/dataOutputStream.dat"));dis.skip(5*8);//讀取第五個數double d2=dis.readDouble();System.out.println(d2);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }

運行結果:

總結

以上是生活随笔為你收集整理的I/O流(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。