IO_File類(lèi)使用:字符串流與管道流

/** 
 *  字符串流:以一個(gè)字符串為數(shù)據(jù)源度硝,來(lái)構(gòu)造一個(gè)字符流
 *  作用:在web開(kāi)發(fā)中,經(jīng)常要從和服務(wù)器上獲取數(shù)據(jù),數(shù)據(jù)的返回格式通常是一個(gè)字符串(xml,json)想罕,我們需要把這個(gè)字符串構(gòu)造成一個(gè)字符流
 *             然后再用第三方的數(shù)據(jù)解析器來(lái)解析數(shù)據(jù)秘蛇。
 */

import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.io.StringWriter;
public class StringStreamDemo {

    public static void main(String[] args) {
        stringReadr();
        stringWriter();
    }
    
    public static void stringReadr() {
        String info = "good good study day day up";
        StringReader sr = new StringReader(info);
        
        //流標(biāo)記器
        StreamTokenizer st = new StreamTokenizer(sr);
        int count = 0;
        while(st.ttype!=StreamTokenizer.TT_EOF) {              //ttype表示流標(biāo)記器里的某一個(gè)類(lèi)型耳璧;TT_EOF表示某一個(gè)類(lèi)型的結(jié)束的標(biāo)記位置
            try {
                if(st.nextToken()==StreamTokenizer.TT_WORD) {  //判斷流標(biāo)記器的下一個(gè)類(lèi)型是否等于流標(biāo)記器里的單詞盗忱;TT_WORD表示類(lèi)型是單詞
                    count++;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        sr.close();
        System.out.println("count="+count);
    }
    
    
    public static void stringWriter() {
        StringWriter sw = new StringWriter();
        sw.write("this is StringWriter test...");
        String info = sw.toString();
        System.out.println(info);
    }

}

管道流

管道流:
管道輸入流應(yīng)該連接到管道輸出流治筒;管道輸入流提供要寫(xiě)入管道輸出流的所有數(shù)據(jù)字節(jié)屉栓。通常,數(shù)據(jù)由某個(gè)線程從PipedInputStream對(duì)象讀取耸袜,并由其他線程將其寫(xiě)入到相應(yīng)的PipedOutputStream友多,不建議對(duì)這兩個(gè)對(duì)象嘗試使用單個(gè)線程,因?yàn)?這樣可能死鎖線程堤框。管道輸入流包含一個(gè)緩沖區(qū)域滥,可在緩沖區(qū)限定的范圍內(nèi)將讀操作和寫(xiě)操作分離開(kāi)。如果想連接管道輸出流提
供數(shù)據(jù)字節(jié)的線程不再存在蜈抓,則認(rèn)為該管道已損壞启绰。
/**
 * 管道流:一個(gè)線程寫(xiě)入,一個(gè)線程讀取
 * 作用资昧,用于線程之間的數(shù)據(jù)通訊
 * 
 */

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipedStreamDemo {

    public static void main(String[] args) {
        PipedInputStream pin = new PipedInputStream();
        PipedOutputStream pout = new PipedOutputStream();
        try {
            pin.connect(pout);  //兩個(gè)管道進(jìn)行連接酬土,輸入管道連接輸出管道
        } catch (IOException e) {
            e.printStackTrace();
        }
        ReadThread readTh = new ReadThread(pin);
        WriteThread writeTh = new WriteThread(pout);
        new Thread(readTh).start();   //啟動(dòng)線程,要先啟動(dòng)讀入的線程格带;
        new Thread(writeTh).start();  //再啟動(dòng)寫(xiě)入的線程
    }

}


//讀取數(shù)據(jù)的線程
class ReadThread implements Runnable {
    private PipedInputStream pin; //輸入管道
    
    ReadThread(PipedInputStream pin){
        this.pin=pin;
    }
    public void run() {
        byte[] buf = new byte[1024];
        int len;
        try {
            len = pin.read(buf);     //read阻塞
            String s = new String(buf,0,len);
            System.out.println("讀到:"+s);
            pin.close();
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
}

//寫(xiě)入數(shù)據(jù)的線程
class WriteThread implements Runnable{
    private PipedOutputStream pout; //輸出管道
    public WriteThread(PipedOutputStream pout){
        this.pout=pout;
    }
    
    public void run() {
        try {
            pout.write("一個(gè)美女...".getBytes()); //管道輸出流
            pout.close();
        } catch (IOException e) {
            e.printStackTrace();
        }  
        
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撤缴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叽唱,更是在濱河造成了極大的恐慌屈呕,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棺亭,死亡現(xiàn)場(chǎng)離奇詭異虎眨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)嗽桩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岳守,“玉大人,你說(shuō)我怎么就攤上這事碌冶∈。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵扑庞,是天一觀的道長(zhǎng)譬重。 經(jīng)常有香客問(wèn)我,道長(zhǎng)罐氨,這世上最難降的妖魔是什么臀规? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮栅隐,結(jié)果婚禮上塔嬉,老公的妹妹穿的比我還像新娘。我一直安慰自己约啊,他們只是感情好邑遏,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著恰矩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪憎蛤。 梳的紋絲不亂的頭發(fā)上外傅,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音俩檬,去河邊找鬼萎胰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棚辽,可吹牛的內(nèi)容都是我干的技竟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼屈藐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榔组!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起联逻,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搓扯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后包归,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锨推,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了换可。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椎椰。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沾鳄,靈堂內(nèi)的尸體忽然破棺而出慨飘,到底是詐尸還是另有隱情,我是刑警寧澤洞渔,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布套媚,位于F島的核電站,受9級(jí)特大地震影響磁椒,放射性物質(zhì)發(fā)生泄漏堤瘤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一浆熔、第九天 我趴在偏房一處隱蔽的房頂上張望本辐。 院中可真熱鬧,春花似錦医增、人聲如沸慎皱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茫多。三九已至,卻和暖如春忽刽,著一層夾襖步出監(jiān)牢的瞬間天揖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工跪帝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留今膊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓伞剑,卻偏偏與公主長(zhǎng)得像斑唬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子黎泣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359