<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 14,  comments - 7,  trackbacks - 0
      2010年11月2日
           

            剛學(xué)java流技術(shù)IO編程時(shí),一下出來這么多流,很是不敏感,不感冒,在學(xué)習(xí)了這段時(shí)間,發(fā)現(xiàn)好多項(xiàng)目中的讀寫數(shù)據(jù),輸入輸出用到的都是以前學(xué)的最基本的,但是自己卻不是很理解其根本,今天就說幾個(gè)流中簡(jiǎn)單但又常用的幾個(gè)知識(shí)點(diǎn)

       Java.io包中定義了多個(gè)流類型,來實(shí)現(xiàn)輸入輸出功能:

      •  按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度來考慮)
      • 如:輸入流InputStream Reader 輸出流 OutputStream Writer
      •  按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流。
      • : 字節(jié)流 InputStream OutputStream 字符流 Reader Writer
      •  按照功能不同可以分為節(jié)點(diǎn)流和處理流。

            通俗的說節(jié)點(diǎn)流就是一個(gè)簡(jiǎn)單的輸入輸出流,而處理流是“連接”在已存在的字節(jié)流或處理流之上的,通過對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫功能。

     我們最經(jīng)常用到的節(jié)點(diǎn)流類型是有關(guān)文件處理的有FileReader FileWriter FileInputStream FileOutputStream

    Ø          FileInputSteam FileOutputStream 類支持其父類InputStream OutputStream 所提供的數(shù)據(jù)讀寫方法。

    Ø       注意:

    §         在實(shí)例化FileInputStreamFileOutputSteam流時(shí)要用trycatch語句以處理其可能拋出的FileNotFoundException

    §         在讀寫數(shù)據(jù)時(shí)也要用trycatch語句以處理可能拋出的 IOException

    §         FileNotFoundExceptionIOException的子類

    FileReader FileWriter 分別繼承自ReaderWriterFileInputSteamFileOutputStream類似,所不同的時(shí)FileReaderFileWriter向文件輸入和輸出的數(shù)據(jù)單位為字符。

         處理流中常用到的有緩沖流 、轉(zhuǎn)換流。

    l          緩沖流有BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream ,緩沖流要“套接”在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時(shí)增加了一些新的方法

    l          BufferedReader提供了readLine方法用于讀取一行字符串(以"r"n           隔)。

    l          BufferedWriter提供了newLine用于寫入一個(gè)行分隔符。

    l          對(duì)于輸出的緩沖流,寫出的數(shù)據(jù)會(huì)先在內(nèi)存中緩存,使用flush方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫出。

    Socket編程中接受信息時(shí),不是直接用InputStream接收,而是把內(nèi)容放入緩沖之中進(jìn)行讀取 ,在Socket中的簡(jiǎn)單應(yīng)用如下
      

    package com.dr.Echo;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class EchoServer {

        
    /**
         * 
    @param args
         * 
    @throws IOException 
         
    */

        
    public static void main(String[] args) throws IOException {
            
    // TODO Auto-generated method stub
             ServerSocket server = null;
             PrintStream out 
    = null;
             BufferedReader buf 
    = null;
             server 
    = new ServerSocket(9999);
             Socket client 
    = null;
             
    while(true){
                 
    //不斷接收數(shù)據(jù)
                 client = server.accept();
                 
    //準(zhǔn)備好像客戶端輸出內(nèi)容
                 out = new PrintStream(client.getOutputStream());
                 
    //而且客戶端要有輸入給服務(wù)器端
                 buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
                 
    //下面先給出一個(gè)完整的信息提示
                 out.println("您好!歡迎光臨:http://wwww.tstc.edu.cn");
                 out.println(
    "輸入bye表示退出哈-");
                 
    while(true){
                     
    //接受客戶端發(fā)送而來的內(nèi)容
                     String str = buf.readLine();
                     System.out.println(
    "client's data is "+str);
                     
    if(str == null){
                         
    //如果str為空就表示退出
                         break;
                     }
    else{
                         
    //如果輸入的是bye則表示是退出系統(tǒng)
                         if("bye".equals(str)){
                             
    break;
                         }

                         out.println(
    "xiaoxiao:"+str);
                     }

                 }

                 out.close();
                 buf.close();
                 client.close();
             }

        }


    }

     

    package com.dr.Echo;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;

    public class EchoClient {

        
    /**
         * 
    @param args
         * 
    @throws IOException 
         * 
    @throws UnknownHostException 
         
    */

        
    public static void main(String[] args) throws UnknownHostException, IOException {
            
    // TODO Auto-generated method stub
             Socket client = null;
             BufferedReader buf 
    = null;
             PrintStream out 
    = null;
             client 
    = new Socket("127.0.0.1",9999);
             buf 
    = new BufferedReader(new InputStreamReader(client.getInputStream()));
             System.out.println(buf.readLine());
             System.out.println(buf.readLine());
             BufferedReader in 
    = new BufferedReader(new InputStreamReader(System.in));
             
             String userInput 
    = null;
             out 
    = new PrintStream(client.getOutputStream());
             
    while((userInput = in.readLine())!=null){
                 out.println(userInput);
                 System.out.println(buf.readLine());
             }

             out.close();
             in.close();
             client.close();
             
             
        }


    }

       

          轉(zhuǎn)換流InputStreamReader OutputStreamWriter 用于字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間的轉(zhuǎn)換。其中InputStreamReader 需要和InputStream”套接OutputStreamWriter需要和OutputStream套接

          數(shù)據(jù)流DataInputStream DataOutputStream 提供了可以存取與機(jī)器無關(guān)的java原始數(shù)據(jù)類型

    l              Print流:PrintWriterPrintStream都屬于輸出流,分別針對(duì)與字符和字節(jié),PrintWriterPrintStream提供了重載的printPrintln方法用于多種數(shù)據(jù)類型的輸出。PrintWriterPrintStream的輸出操作不會(huì)拋出異常,用戶通過檢測(cè)錯(cuò)誤狀態(tài)獲取錯(cuò)誤信息。PrintWriterPrintStream有自動(dòng)flush功能

    l           

     這幾個(gè)流的類型都是在以后的學(xué)習(xí)中經(jīng)常用到的。就不一一做例子啦

     

             以后所學(xué)到的所有流類型都是繼承 InputStream OutputStream Reader Writer 這四個(gè)抽象的流類型

    posted @ 2011-01-18 22:26 迷人笑笑 閱讀(888) | 評(píng)論 (0)編輯 收藏
         摘要:           我相信大多說人都對(duì)構(gòu)造方法、方法不陌生,而且很了解,但我也相信有很多像我這樣的沒有一個(gè)很好很清晰很全面的認(rèn)識(shí),今天就把它整理如下,希望能給大家?guī)睃c(diǎn)方便與幫助,也希望大家多多討論。         ...  閱讀全文
    posted @ 2010-11-12 16:43 迷人笑笑 閱讀(39169) | 評(píng)論 (1)編輯 收藏
         摘要:        今天我們用實(shí)例程序說一下java中常見的生產(chǎn)者與消費(fèi)者的問題。  首先看一下里面線程間的通信問題:    一個(gè)線程向數(shù)據(jù)存儲(chǔ)空間添加數(shù)據(jù)(生產(chǎn)者),另一個(gè)線程從數(shù)據(jù)存儲(chǔ)空間去出數(shù)據(jù)(消費(fèi)者)。 這個(gè)程序中有兩個(gè)可能出現(xiàn)的問題需要考慮: 1、   ...  閱讀全文
    posted @ 2010-11-10 23:07 迷人笑笑 閱讀(2165) | 評(píng)論 (1)編輯 收藏
         摘要: 項(xiàng)目需求:1.病人來掛號(hào)時(shí)根據(jù)自己想找的醫(yī)生掛相應(yīng)的醫(yī)生的號(hào),即加到相應(yīng)醫(yī)生的病人隊(duì)列中。                    2.醫(yī)生看見自己的屏幕,點(diǎn)擊自己的名字,得到自己相應(yīng)列表的下一位病人 具體代碼如下: ...  閱讀全文
    posted @ 2010-11-02 16:51 迷人笑笑 閱讀(3470) | 評(píng)論 (1)編輯 收藏
    <2010年11月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿(13)

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 18禁亚洲深夜福利人口| 亚洲va在线va天堂va四虎| 亚洲中文无码卡通动漫野外| 88av免费观看入口在线| 久久综合九九亚洲一区| 香蕉免费一区二区三区| 亚洲天堂中文字幕| 国产免费的野战视频| 亚洲国产最大av| 永久免费视频v片www| 亚洲第一se情网站| 亚洲福利中文字幕在线网址| 国产精品美女久久久免费 | 亚洲真人日本在线| 两个人日本WWW免费版| 亚洲国产成人久久精品动漫| 亚洲精品视频在线免费| 亚洲色欲色欱wwW在线| 亚洲国产成人精品久久久国产成人一区二区三区综 | 日韩不卡免费视频| 亚洲精品美女久久久久久久| 免费国产a国产片高清| 中文字幕无线码中文字幕免费| 亚洲AV人人澡人人爽人人夜夜 | 成人免费无码大片a毛片| 噜噜嘿在线视频免费观看| 国产精品亚洲精品久久精品 | 永久黄网站色视频免费| 免费福利在线观看| 精品亚洲一区二区| 色窝窝免费一区二区三区| 精品久久久久久亚洲中文字幕| 中文字幕亚洲激情| 国产h肉在线视频免费观看| 久久久亚洲精华液精华液精华液| 亚洲人成网站观看在线播放| 热re99久久6国产精品免费| 亚洲av无码专区青青草原| 国产A在亚洲线播放| 日韩在线免费看网站| 久久精品国产免费|