溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中IO操作字節(jié)流與字符流的示例分析

發(fā)布時(shí)間:2022-03-28 09:18:42 來(lái)源:億速云 閱讀:141 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“Java中IO操作字節(jié)流與字符流的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Java中IO操作字節(jié)流與字符流的示例分析”這篇文章吧。

    IO操作

    Java中IO操作字節(jié)流與字符流的示例分析

    字節(jié)流

    • java.io.InputStream 輸入流,主要是用來(lái)讀取文件內(nèi)容的。

    • java.io.OutputStream 輸出流,主要是用來(lái)將內(nèi)容字節(jié)寫入文件的。

    FileInputStream

    該流用于從文件讀取數(shù)據(jù),它的對(duì)象可以用關(guān)鍵字 new 來(lái)創(chuàng)建。

    有多種構(gòu)造方法可用來(lái)創(chuàng)建對(duì)象。

    可以使用字符串類型的文件名來(lái)創(chuàng)建一個(gè)輸入流對(duì)象來(lái)讀取文件

    InputStream f = new FileInputStream("D:/hello");

    也可以使用一個(gè)文件對(duì)象來(lái)創(chuàng)建一個(gè)輸入流對(duì)象來(lái)讀取文件。我們首先得使用 File() 方法來(lái)創(chuàng)建一個(gè)文件對(duì)象:

    File f = new File("D:/hello");
    InputStream in = new FileInputStream(f);
    FileOutputStream

    該類用來(lái)創(chuàng)建一個(gè)文件并向文件中寫數(shù)據(jù)。

    如果該流在打開(kāi)文件進(jìn)行輸出前,目標(biāo)文件不存在,那么該流會(huì)創(chuàng)建該文件。

    有兩個(gè)構(gòu)造方法可以用來(lái)創(chuàng)建 FileOutputStream 對(duì)象。

    使用字符串類型的文件名來(lái)創(chuàng)建一個(gè)輸出流對(duì)象:

    OutputStream f = new FileOutputStream("D:/hello");

    也可以使用一個(gè)文件對(duì)象來(lái)創(chuàng)建一個(gè)輸出流來(lái)寫文件。我們首先得使用File()方法來(lái)創(chuàng)建一個(gè)文件對(duì)象:

    File f = new File("D:/hello");
    OutputStream fOut = new FileOutputStream(f);
    字節(jié)流讀寫案例

    讀取D:/hello.txt文件中的內(nèi)容再輸入到文件D:/test.txt中

      public class Mk {
            public static void main(String[] args) throws IOException {
                File file=new File("D://hello.txt");
                File file1= new File("D://test.txt");
                InputStream is=new FileInputStream(file);
                OutputStream out=new FileOutputStream(file1);
                //定義byte數(shù)組用來(lái)暫存數(shù)據(jù)
                byte[] buf = new byte[1024];
                //讀取Is中的內(nèi)容存到buf
                is.read(buf);
                //將buf中的內(nèi)容寫入out
                out.write(buf);
                is.close();
                out.close();
            }
            }

    字符流

    FileReader

    寫入文件實(shí)例

    public class A {
        public static void main(String[] args) throws IOException {
            FileWriter fw = new FileWriter("user.txt", true);
            fw.write("你好中國(guó)1");
            fw.write("你好中國(guó)2");
            fw.write("你好中國(guó)3");
            fw.close();
        }
    }

    Java中IO操作字節(jié)流與字符流的示例分析

    Java中IO操作字節(jié)流與字符流的示例分析

    FileWriter

    讀取文件實(shí)例

    這里我把內(nèi)容換行了

    Java中IO操作字節(jié)流與字符流的示例分析

    br.ready()是判斷這一行流是否為空

    br.readLine()是輸出一行,然后自動(dòng)光標(biāo)指到下一行。

    public class A {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new FileReader("user.txt"));
            while (br.ready()) {
                System.out.println(br.readLine());
            }
            br.close();
        }
    }

    Java中IO操作字節(jié)流與字符流的示例分析

    字節(jié)流與字符流的區(qū)別

    字節(jié)流和字符流使用是非常相似的,那么除了操作代碼的不同之外,還有哪些不同呢?

    字節(jié)流在操作的時(shí)候本身是不會(huì)用到緩沖區(qū)(內(nèi)存)的,是與文件本身直接操作的,而字符流在操作的時(shí)候是使用到緩沖區(qū)的 字節(jié)流在操作文件時(shí),即使不關(guān)閉資源(close方法),文件也能輸出,但是如果字符流不使用close方法的話,則不會(huì)輸出任何內(nèi)容,說(shuō)明字符流用的是緩沖區(qū),并且可以使用flush方法強(qiáng)制進(jìn)行刷新緩沖區(qū),這時(shí)才能在不close的情況下輸出內(nèi)容

    那開(kāi)發(fā)中究竟用字節(jié)流好還是用字符流好呢?

    在所有的硬盤上保存文件或進(jìn)行傳輸?shù)臅r(shí)候都是以字節(jié)的方法進(jìn)行的,包括圖片也是按字節(jié)完成,而字符是只有在內(nèi)存中才會(huì)形成的,所以使用字節(jié)的操作是最多的。 如果要java程序?qū)崿F(xiàn)一個(gè)拷貝功能,應(yīng)該選用字節(jié)流進(jìn)行操作(可能拷貝的是圖片),并且采用邊讀邊寫的方式(節(jié)省內(nèi)存)。

    以上是“Java中IO操作字節(jié)流與字符流的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI