成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java IO學(xué)習(xí)筆記三

CodeSheep / 2467人閱讀

摘要:學(xué)習(xí)筆記三在整個(gè)包中,實(shí)際上就是分為字節(jié)流和字符流,但是除了這兩個(gè)流之外,還存在了一組字節(jié)流字符流的轉(zhuǎn)換類。是字節(jié)流通向字符流的橋梁它使用指定的讀取字節(jié)并將其解碼為字符。主要的功能還是向文件中寫入文件構(gòu)造函數(shù)創(chuàng)建使用默認(rèn)字符編碼的。

Java IO學(xué)習(xí)筆記三

在整個(gè)IO包中,實(shí)際上就是分為字節(jié)流和字符流,但是除了這兩個(gè)流之外,還存在了一組字節(jié)流-字符流的轉(zhuǎn)換類。

OutputStreamWriter:是Writer的子類,將輸出的字符流變?yōu)樽止?jié)流,即:將一個(gè)字符流的輸出對象變成字節(jié)流的輸出對象。

InputStreamReader:是Reader的子類,將輸入的字節(jié)流變?yōu)樽址?,即:將一個(gè)字節(jié)流的輸入對象變成字符流的輸入對象。

一般在操作輸入輸出內(nèi)容就需要使用字節(jié)或字符流,但是有些時(shí)候需要將字符流變成字節(jié)流的形式,或者將字節(jié)流變?yōu)樽址鞯男问?,所以,就需要另外一組轉(zhuǎn)換流的操作類。

InputStreamReader

InputStreamReader 是字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺(tái)默認(rèn)的字符集。

每次調(diào)用 InputStreamReader 中的一個(gè) read() 方法都會(huì)導(dǎo)致從底層輸入流讀取一個(gè)或多個(gè)字節(jié)。要啟用從字節(jié)到字符的有效轉(zhuǎn)換,可以提前從底層流讀取更多的字節(jié),使其超過滿足當(dāng)前讀取操作所需的字節(jié)。

主要的功能還是從文件中讀取內(nèi)容,不過是一次性的讀取多個(gè)字節(jié),這個(gè)很像它的子類FileReader

構(gòu)造函數(shù)

InputStreamReader(InputStream in) 創(chuàng)建一個(gè)使用默認(rèn)字符集的 InputStreamReader,不過這里的InputStream是抽下類,因此可以使用它的子類FileInputStream實(shí)例化,這里的FileInputStream是操作字節(jié)流的,顯然看出這個(gè)類的作用就是字符流和字節(jié)流的橋梁

常用方法

close()

int read() 讀取單個(gè)字符

int read(Char[] c) 讀取字符存儲(chǔ)在字符數(shù)組中

int read(char[] cbuf, int offset, int length) 將字符讀入數(shù)組中的某一部分

boolean ready() 判斷此流是否已經(jīng)準(zhǔn)備好用于讀取。

實(shí)例
package IO;

import java.io.*;

/**
 * Created by chenjiabing on 17-5-24.
 */
public class demo4 {
    public static void main(String args[]) {
        File file = new File("/tmp" + File.separator + "test" + File.separator + "test.txt");
        InputStreamReader inputStreamReader = null;
        try {
            inputStreamReader = new InputStreamReader(new FileInputStream(file));  //初始化
            char[] c = new char[(int) file.length()];   //創(chuàng)建數(shù)組
            try {
                int len = inputStreamReader.read(c);   //將內(nèi)容讀取到數(shù)組中
                System.out.println(len);
                for (int i = 0; i < c.length; i++) {
                    System.out.print(c[i]);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if(inputStreamReader!=null)
            {
                try {
                    inputStreamReader.close();   //關(guān)閉
                }catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }

    }
}

注意:從上面的代碼中可以看到這個(gè)和FileReader的操作是一樣的,只是構(gòu)造的方法不一樣

OutputStreamWriter

OutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節(jié)。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺(tái)默認(rèn)的字符集。

每次調(diào)用 write() 方法都會(huì)導(dǎo)致在給定字符(或字符集)上調(diào)用編碼轉(zhuǎn)換器。在寫入底層輸出流之前,得到的這些字節(jié)將在緩沖區(qū)中累積??梢灾付ù司彌_區(qū)的大小,不過,默認(rèn)的緩沖區(qū)對多數(shù)用途來說已足夠大。注意,傳遞給 write() 方法的字符沒有緩沖。

主要的功能還是向文件中寫入文件

構(gòu)造函數(shù)

OutputStreamWriter(OutputStream out) 創(chuàng)建使用默認(rèn)字符編碼的 OutputStreamWriter。這里同樣是抽象類,所以用它的子類FileOutputStream實(shí)例化

常用方法

close()

flush()

write(String str) 寫入字符串

void write(String str, int off, int len) 寫入字符串的某一部分。

write(int c) 寫入單個(gè)字符

void write(char[] cbuf, int off, int len) 寫入字符數(shù)組的某一部分。

實(shí)例
package IO;

import java.io.*;

/**
 * Created by chenjiabing on 17-5-24.
 */
public class demo5 {
    public static void main(String[] args)
    {
        File file=new File("/tmp"+File.separator+"test"+File.separator+"test.txt");
        OutputStreamWriter outputStreamWriter=null;
        try {
            outputStreamWriter=new OutputStreamWriter(new FileOutputStream(file,true));
            String str="陳加兵
";
            int data=48;
            String name="chenjiabing";
            try {
                outputStreamWriter.write(str);
                outputStreamWriter.write(data);
                outputStreamWriter.write(name,0,2);   //寫入字符串的一部分
            }catch (IOException e)
            {
                e.printStackTrace();
            }
        }catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }finally {
            if(outputStreamWriter!=null)
            {
                try {
                    outputStreamWriter.flush();
                    outputStreamWriter.close();
                }catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
}

從上面可以看出OutputStreamWriterFileWriter的用法一樣

參考文章

http://www.cnblogs.com/lich/archive/2011/12/11/2283848.html

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67125.html

相關(guān)文章

  • Java學(xué)習(xí)筆記5-方法、流(Stream)、文件(File)和IO

    摘要:是方法返回值的數(shù)據(jù)類型。方法名和參數(shù)表共同構(gòu)成方法簽名。構(gòu)造方法和它所在類的名字相同,但構(gòu)造方法沒有返回值。輸入流表示從一個(gè)源讀取數(shù)據(jù),輸出流表示向一個(gè)目標(biāo)寫數(shù)據(jù)。下圖是一個(gè)描述輸入流和輸出流的類層次圖。有多種構(gòu)造方法可用來創(chuàng)建對象。 我們經(jīng)常使用到 System.out.println(),那么它是什么呢? 一、系統(tǒng)方法 我們經(jīng)常使用到 System.out.println(),那么...

    suemi 評(píng)論0 收藏0
  • Java進(jìn)階之路

    摘要:探索專為而設(shè)計(jì)的將探討進(jìn)行了何種改進(jìn),以及這些改進(jìn)背后的原因。關(guān)于最友好的文章進(jìn)階前言之前就寫過一篇關(guān)于最友好的文章反響很不錯(cuò),由于那篇文章的定位就是簡單友好,因此盡可能的摒棄復(fù)雜的概念,只抓住關(guān)鍵的東西來講,以保證大家都能看懂。 周月切換日歷 一個(gè)可以進(jìn)行周月切換的日歷,左右滑動(dòng)的切換月份,上下滑動(dòng)可以進(jìn)行周,月不同的視圖切換,可以進(jìn)行事件的標(biāo)記,以及節(jié)假日的顯示,功能豐富 Andr...

    sushi 評(píng)論0 收藏0
  • JAVA學(xué)習(xí)筆記036-第一個(gè)簡單的Mybatis程序(代碼經(jīng)驗(yàn)證)

    摘要:目標(biāo)創(chuàng)建一個(gè)簡單的框架的程序,實(shí)現(xiàn)對數(shù)據(jù)庫的讀取操作。的核心配置文件核心配置文件,配置數(shù)據(jù)庫連接信息事物等每一個(gè)都需要在核心配置文件中注冊工具類獲取第一步獲取對象既然有了,顧名思義,我們可以從中獲得的實(shí)例。 ...

    itvincent 評(píng)論0 收藏0
  • 多線程學(xué)習(xí)筆記(2):多線程基礎(chǔ)

    摘要:和方法用來設(shè)置線程是否成為守護(hù)線程和判斷線程是否是守護(hù)線程。守護(hù)線程依賴于創(chuàng)建它的線程,隨它的消亡而消亡。使用提供的方法,提醒線程終止,但是否真正終止由線程自己決定。參考實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)多線程干貨系列一多線程基礎(chǔ) 一、如何創(chuàng)建多線程 1、繼承Thread類 public class MyThread extends Thread { @Override public ...

    HelKyle 評(píng)論0 收藏0
  • 多線程學(xué)習(xí)筆記(1):volatile和synchronized

    摘要:今天開始整理學(xué)習(xí)多線程的知識(shí),談?wù)勛钪匾膬蓚€(gè)關(guān)鍵字和。但是這樣一個(gè)過程比較慢,在使用多線程的時(shí)候就會(huì)出現(xiàn)問題。有序性有序性是指多線程執(zhí)行結(jié)果的正確性。這種機(jī)制在多線程中會(huì)出現(xiàn)問題,因此可以通過來禁止重排。 今天開始整理學(xué)習(xí)多線程的知識(shí),談?wù)勛钪匾膬蓚€(gè)關(guān)鍵字:volatile和synchronized。 一、三個(gè)特性 1、原子性 所謂原子性操作就是指這些操作是不可中斷的,要么執(zhí)行過程...

    jk_v1 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<