国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java基礎篇---I/O技術(二)

2019-11-14 23:09:20
字體:
來源:轉載
供稿:網友
java基礎篇---I/O技術(二)

接著上篇http://m.survivalescaperooms.com/oumyye/p/4314412.html

java I/O流---內存操作流ByteArrayInputStream和ByteArrayOutputStream
ByteArrayInputStream包含一個內部緩沖區,該緩沖區包含從流中讀取的字節,內部計數器跟著read方法要提供的下一個字節。FileInputStream是把文件當做數據源。ByteArrayInputStream則是把內存中的某一個數組單做數據源。ByteArrayOutputStream類實現了一個輸出流。其中的數據被寫入一個byte數組。緩沖區會隨著數據的不斷寫入而自動增長。可使用toByteArray()和toString()獲取數據源的。ByteArrayOutputStream將一個輸出流指向一個Byte數組,但這個Byte數組是ByteArrayOutputStream內部內置的,不需要定義。
操作步驟

import java.io.* ;public class ByteArrayDemo01{    public static void main(String args[]){        String str = "HELLOWORLD" ;        // 定義一個字符串,全部由大寫字母組成        ByteArrayInputStream bis = null ;    // 內存輸入流        ByteArrayOutputStream bos = null ;    // 內存輸出流        bis = new ByteArrayInputStream(str.getBytes()) ;    // 向內存中輸出內容        bos = new ByteArrayOutputStream() ;    // 準備從內存ByteArrayInputStream中讀取內容        int temp = 0 ;        while((temp=bis.read())!=-1){            char c = (char) temp ;    // 讀取的數字變為字符            bos.write(Character.toLowerCase(c)) ;    // 將字符變為小寫        }        // 所有的數據就全部都在ByteArrayOutputStream中        String newStr = bos.toString() ;    // 取出內容        try{            bis.close() ;            bos.close() ;        }catch(IOException e){            e.PRintStackTrace() ;        }        System.out.println(newStr) ;    }};
Java I/O流---過濾流—緩沖流BufferedInputStream和BufferedOutputStream

類BufferedInputStream和BufferedOutputStream繼承FilterInputStream和FilterOutputStream,實現了帶緩沖的過濾流,它提供了緩沖機制,把任意的I/O流“捆綁”到緩沖流上,可以提高該I/O流的讀取效率,在初始化時,除了要指定所連接的I/O流之外,還可以指定緩沖區的大小。在讀寫的同時對數據緩存,這樣避免每次讀寫數據都要進行實際的物理讀寫操作,在用BufferdOutputStream輸出時,數據先輸入緩沖區,當緩沖區滿的時再寫入連接的輸出流,可以調用flush()來清空緩沖區。這兩個流是處理流,通過內部緩存數組來提高操作流的效率

使用BufferedInputStream和BufferedOutputStream實現文件的復制void copyFile(String src , String dec){   FileInputStream fis=null;   BufferedInuptStream bis=null;    FileOutputStream fos=null;   BufferedOutputStream bos=null;   try {       fis=new FileInputStream(src);       fos=new FileOutputStream(dec);       bis=new BufferedInputStream(fis);       bos=new BufferedOutputStream(fos);       while ((temp=bis.read())!=-1) {           bos.write(temp);       }   } catch (FileNotFoundException e) {        e.printStackTrace();   }catch (IOException e) {        e.printStackTrace();   }finally {        //增加處理流后,注意流的關閉順序!“后打開的先關閉”        try {            bos.close();        } catch (IOException e) {             e.printStackTrace();        }        try {            bis.close();        } catch (IOException e) {             e.printStackTrace();        }        try {            fos.close();        } catch (IOException e) {             e.printStackTrace();        }        try {            fis.close();        } catch (IOException e) {             e.printStackTrace();        }   }}
java I/O---數據操作流DataInputStream和DataOutputStream

數據操作流通常在流中寫入或讀取一個結果是使用,如 網絡數據傳遞,DataInputStream和DataOutputStream提供了可以存取與機器無關的所有java基礎類型數據。

實例 數據寫入

import java.io.DataOutputStream ;import java.io.File ;import java.io.FileOutputStream ;public class DataOutputStreamDemo{    public static void main(String args[]) throws Exception{    // 所有異常拋出        DataOutputStream dos = null ;            // 聲明數據輸出流對象        File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路徑        dos = new DataOutputStream(new FileOutputStream(f)) ;    // 實例化數據輸出流對象        String names[] = {"襯衣","手套","圍巾"} ;    // 商品名稱        float prices[] = {98.3f,30.3f,50.5f} ;        // 商品價格        int nums[] = {3,2,1} ;    // 商品數量        for(int i=0;i<names.length;i++){    // 循環輸出            dos.writeChars(names[i]) ;    // 寫入字符串            dos.writeChar('/t') ;    // 寫入分隔符            dos.writeFloat(prices[i]) ; // 寫入價格            dos.writeChar('/t') ;    // 寫入分隔符            dos.writeInt(nums[i]) ; // 寫入數量            dos.writeChar('/n') ;    // 換行        }        dos.close() ;    // 關閉輸出流    }};

使用DataOutputStream寫入的數據使用DataInputStream讀取進來

import java.io.DataInputStream ;import java.io.File ;import java.io.FileInputStream ;public class DataInputStreamDemo{    public static void main(String args[]) throws Exception{    // 所有異常拋出        DataInputStream dis = null ;        // 聲明數據輸入流對象        File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路徑        dis = new DataInputStream(new FileInputStream(f)) ;    // 實例化數據輸入流對象        String name = null ;    // 接收名稱        float price = 0.0f ;    // 接收價格        int num = 0 ;    // 接收數量        char temp[] = null ;    // 接收商品名稱        int len = 0 ;    // 保存讀取數據的個數        char c = 0 ;    // '/u0000'        try{            while(true){                temp = new char[200] ;    // 開辟空間                len = 0 ;                while((c=dis.readChar())!='/t'){    // 接收內容                    temp[len] = c ;                    len ++ ;    // 讀取長度加1                }                name = new String(temp,0,len) ;    // 將字符數組變為String                price = dis.readFloat() ;    // 讀取價格                dis.readChar() ;    // 讀取/t                num = dis.readInt() ;    // 讀取int                dis.readChar() ;    // 讀取/n                System.out.printf("名稱:%s;價格:%5.2f;數量:%d/n",name,price,num) ;            }        }catch(Exception e){}        dis.close() ;    }};

java I/O ---打印流

在整個IO包中,打印流是輸出信息最方便的類,主要包含字節打印流(PrintStream)和字符打印流(PrintWriter).打印流提供了非常方便的打印功能,可以打印任何的數據類型。

打印輸入

import java.io.* ;public class PrintDemo02{    public static void main(String arg[]) throws Exception{        PrintStream ps = null ;        // 聲明打印流對象        // 如果現在是使用FileOuputStream實例化,意味著所有的輸出是向文件之中        ps = new PrintStream(new FileOutputStream(new File("d:" + File.separator + "test.txt"))) ;        String name = "偶my耶" ;    // 定義字符串        int age = 20 ;                // 定義整數        float score = 990.356f ;    // 定義小數        char sex = 'M' ;            // 定義字符        ps.printf("姓名:%s;年齡:%d;成績:%f;性別:%c",name,age,score,sex) ;        ps.close() ;    }};
BufferReader

BufferReader是從緩沖區讀取內容,所有的輸入的字節數據都將放在緩沖區之中。

import java.io.* ;public class BufferedReaderDemo01{    public static void main(String args[]){        BufferedReader buf = null ;        // 聲明對象        buf = new BufferedReader(new InputStreamReader(System.in)) ;    // 將字節流變為字符流        String str = null ;    // 接收輸入內容        System.out.print("請輸入內容:") ;        try{            str = buf.readLine() ;    // 讀取一行數據        }catch(IOException e){            e.printStackTrace() ;    // 輸出信息        }        System.out.println("輸入的內容為:" + str) ;    }};


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺昌县| 定兴县| 淮安市| 海淀区| 田阳县| 天门市| 堆龙德庆县| 陆河县| 南澳县| 确山县| 新巴尔虎左旗| 民丰县| 湖州市| 新野县| 海口市| 德格县| 措美县| 乌拉特前旗| 台湾省| 垫江县| 吉水县| 方正县| 明星| 汾阳市| 宣汉县| 伊金霍洛旗| 饶河县| 惠州市| 海门市| 思南县| 普安县| 镇巴县| 家居| 云龙县| 铜鼓县| 德令哈市| 通海县| 玉树县| 龙岩市| 云梦县| 萨迦县|