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

資訊專欄INFORMATION COLUMN

Java中的IO流之輸出流|樂字節(jié)

CoderStudy / 2121人閱讀

摘要:大家好,樂字節(jié)小樂又來了。上一篇給大家?guī)淼氖侵械牧髦斎肓鳂纷止?jié),本文將繼續(xù)講述流之輸出流。一輸出流抽象類和和也非常相似。從上述的字節(jié)數(shù)組中,讀取字符串。

大家好,樂字節(jié)小樂又來了。上一篇給大家?guī)淼氖牵篔ava中的IO流之輸入流|樂字節(jié),本文將繼續(xù)講述IO流之輸出流。

一、輸出流 1、抽象類:OutputStream 和 Writer

OutputStream和Writer也非常相似。
在OutputStream 里包含如下方法:

在 Writer 中, 因?yàn)樽址髦苯右宰址鳛椴僮鲉挝唬?Writer 可以用字符串來代替字符數(shù)組,即以String對象來作為參數(shù)。 包含如下方法:

2、文件節(jié)點(diǎn)類: FileOutputStream 和 FileWriter

FileOutputStream 和 FileWriter,它們都是節(jié)點(diǎn)流,直接和指定文件關(guān)聯(lián)。

public class WriteFile {
    public static void main(String[] args) {
        //1、建立聯(lián)系   File對象   源頭 目的地
        File dest=new File("c:/IO/print.txt");
        //2、選擇流    文件輸出流   OutputStream FileOutputStream
        OutputStream out=null;
        //以追加形式寫出文件  必須為true 否則會覆蓋
        try {
            out=new FileOutputStream(dest,true);
            //3、操作
            String str="shsxt is very good 
 good good good";
            //字符串轉(zhuǎn)成字節(jié)數(shù)組
            byte[] data=str.getBytes();
            out.write(data,0,data.length);
            out.flush();//強(qiáng)制刷新出去
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("文件未找到");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("文件寫出失敗");
        }finally{
            try {
                if(out!=null){
                out.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("關(guān)閉輸出流失敗");
            }
        }
    }
}
//1、創(chuàng)建源
        File dest=new File("f:/IO/char.txt");
//2、選擇流
        Writer    wr=new FileWriter(dest,true);
//3、寫出
    String str="鋤禾日當(dāng)午
碼農(nóng)真辛苦
一本小破書
一讀一上午";
           wr.write(str);
        //追加內(nèi)容
        wr.append("我就是追加進(jìn)去的");
        wr.flush();//強(qiáng)制刷出
//4、關(guān)閉資源
        wr.close();

結(jié)合輸入輸出流,可以實(shí)現(xiàn)文件拷貝

public static void copyFile(String srcPath, String destPath) throws FileNotFoundException,IOException{
        // 1、建立聯(lián)系 源(存在且為文件) 目的地(文件可以不存在)
        File src = new File(srcPath);
        File dest = new File(destPath);
        if(!src.isFile()){//不是文件或者為null時(shí)拋出異常
            System.out.println("只能拷貝文件");
            throw new IOException("只能拷貝文件");
        }
        // 2、選擇流
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dest);
        // 3、操作
        byte[] flush = new byte[1024];
        int len = 0;
        // 讀取
        while (-1 != (len = in.read(flush))) {
            // 寫出
            out.write(flush, 0, len);
        }
        out.flush();// 強(qiáng)制刷出
        // 關(guān)閉流 先打開的后關(guān)閉
        out.close();
        in.close();
    }
3、緩沖處理流:BufferedOutputStream 和 BufferedWriter

緩沖流提升性能,BufferedWriter存在新增方法newLine(),不能發(fā)生多態(tài)

public static void copyFile(String srcPath, String destPath) throws FileNotFoundException,IOException{
        // 1、建立聯(lián)系 源(存在且為文件) 目的地(文件可以不存在)
        File src = new File(srcPath);
        File dest = new File(destPath);
        if(!src.isFile()){//不是文件或者為null時(shí)拋出異常
            System.out.println("只能拷貝文件");
            throw new IOException("只能拷貝文件");
        }
        // 2、選擇流
        InputStream in = new BufferedInputStream(new FileInputStream(src));
        OutputStream out =new BufferedOutputStream(new FileOutputStream(dest));
        // 3、操作
        byte[] flush = new byte[1024];
        int len = 0;
        // 讀取
        while (-1 != (len = in.read(flush))) {
            // 寫出
            out.write(flush, 0, len);
        }
        out.flush();// 強(qiáng)制刷出
        // 關(guān)閉流 先打開的后關(guān)閉
        out.close();
        in.close();
    }
}    

                      //1、創(chuàng)建源       僅限于    字符的純文本
        File src=new File("f:/char.txt");
        File dest=new File("f:/testIO/char.txt");
        //2、選擇流
    BufferedReader reader=new BufferedReader(new FileReader(src));
BufferedWriter wr=new BufferedWriter(new  FileWriter(dest,true));pend(msg2); 
                     //3、新增方法操作
        String line=null;
        while(null!=(line=reader.readLine())){
            wr.write(line);
            //wr.append("
");
            //換行符號
            wr.newLine();
        }
        wr.flush();//強(qiáng)制刷出
// 4、關(guān)閉流 先打開的后關(guān)閉
        out.close();
        in.close();
4、轉(zhuǎn)換處理流:OutputStreamWriter

可以處理文件的字符集,即將文件按指定字符集進(jìn)行編碼存儲。

//寫出文件    編碼
BufferedWriter bw=new BufferedWriter(
    new OutputStreamWriter(
        new BufferedOutputStream(
            new FileOutputStream(
                new File("f:/testIO/char.txt")
            )
        ),"utf-8"
    )
);
    String info=null;
    while(null!=(info=br.readLine())){
        bw.write(info);
        bw.newLine();
    }
    bw.flush();
    bw.close();
5、字節(jié)數(shù)組節(jié)點(diǎn)類: ByteArrayOutputStream
/**
* 字節(jié)數(shù)組輸出流:操作與文件輸出流有些不同,有新增方法,所以不可以使用多態(tài)
* @throws IOException 
*/
    public static byte[] write() throws IOException{
        //目的地    字節(jié)數(shù)組
        byte[]dest;
    //選擇流    不同點(diǎn):不需要將目的地放入new ByteArrayOutputStream()
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
    //操作    寫出, 可以當(dāng)作將本地的內(nèi)容通過字節(jié)數(shù)組寫入服務(wù)器
        String msg="字節(jié)數(shù)組輸入流:操作與文件輸入流操作一致";
        byte[]info=msg.getBytes();
        //將內(nèi)容寫入bos
        bos.write(info,0,info.length);
    //不同點(diǎn):獲取數(shù)據(jù)    toByteArray():是將字節(jié)數(shù)組輸出流轉(zhuǎn)為字節(jié)數(shù)組
        dest=bos.toByteArray();
        //釋放資源
        bos.close();//由于bos在jvm中,所以關(guān)閉與否不影響
        return dest;
    }
  

再來看幾個(gè)作業(yè)題,大家不妨思考思考。
1、Reader和Writer的基本特點(diǎn)是?
2、FileReader和FileWriter的作用是?
3、BufferedReader和BufferedWriter的作用是?
4、word文檔能使用字符流操作嗎?為什么?
5、使用BufferedReader和BufferedWriter實(shí)現(xiàn)文本文件的拷貝
6、什么情況下可以使用字符流拷貝文件夾?什么情況下不能?拷貝文件夾應(yīng)該使用字符流還是字節(jié)流?
7、拷貝文件 使用哪些流?
8、InputStreamReader和OutputStreamWriter的作用。
9、ByteArrayInputStream與 ByteArrayOutputStream的數(shù)據(jù)源是什么?
10、為什么ByteArrayOutputStream 不推薦使用匿名?
11、將”堅(jiān)信沒有學(xué)不會的知識,只有不想學(xué)的知識”寫出到字節(jié)數(shù)組中。
12、從上述的 字節(jié)數(shù)組中,讀取字符串。
13、DataInputStream和DataOutputStream的特點(diǎn)是?
14、將3.14 寫出到字節(jié)數(shù)組中,再進(jìn)行讀取
15、序列化和反序列化指的是什么?
16、想序列化某個(gè)類的對象,該類必須實(shí)現(xiàn)Serializable接口嗎?
17、說說Serializable接口的特點(diǎn)。
18、transient的作用是?
19、使用ObjectInputstream和ObjectOutputStream實(shí)現(xiàn)將某個(gè)對象存儲到硬盤上,然后再讀到程序中。
20、PrintStream打印流經(jīng)常用于什么情況?

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

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

相關(guān)文章

  • Java中的IO輸入|字節(jié)

    摘要:上一篇寫到了流,這篇文章著重談?wù)勢斎肓鳎傧麓卧僬f輸出流。一輸入流字節(jié)流和字符流的操作方式幾乎完全一樣,只是操作的數(shù)據(jù)單元不同而已。返回結(jié)果為時(shí)表明到了輸入流的結(jié)束點(diǎn)。 親愛的樂字節(jié)的小伙伴們,小樂又來分享Java技術(shù)文章了。上一篇寫到了IO流,這篇文章著重 談?wù)勢斎肓?,再下次再說輸出流。 一、 輸入流 字節(jié)流和字符流的操作方式幾乎完全一樣,只是操作的數(shù)據(jù)單元不同而已 。字節(jié)流可 以操...

    elliott_hu 評論0 收藏0
  • Java網(wǎng)絡(luò)編程探究|字節(jié)

    摘要:換句話說,套接字起到通信端點(diǎn)的作用。單個(gè)套接字是一個(gè)端點(diǎn),而一對套接字則構(gòu)成一個(gè)雙向通信信道,使非關(guān)聯(lián)進(jìn)程可以在本地或通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換。 大家好,我是樂字節(jié)小樂,上次給大家講述了Java中的IO流之輸出流|樂字節(jié),本文將會給大家講述網(wǎng)絡(luò)編程。 主要內(nèi)容如下: 網(wǎng)絡(luò) 網(wǎng)絡(luò)分層 列表項(xiàng)目 IP位置 端口port 網(wǎng)絡(luò)編程 showImg(https://segmentfault.c...

    Kahn 評論0 收藏0
  • 字節(jié)Java之file、IO基礎(chǔ)知識和操作步驟

    摘要:流分類由此可見,流很龐大從不同角度進(jìn)行分類數(shù)據(jù)分類按處理數(shù)據(jù)單位分為字節(jié)流和字符流。處理數(shù)據(jù)是音頻視頻文本等一切為字節(jié)流,僅能處理文本的為字符流。功能分類節(jié)點(diǎn)流和處理流。從向一個(gè)特定的設(shè)備磁盤網(wǎng)絡(luò)等讀寫數(shù)據(jù)的流稱為節(jié)點(diǎn)流,也常被稱為低級流。 嗨嘍,小樂又來了,今天要給大家送上的技術(shù)文章是Java重點(diǎn)知識-IO流。 先來看看IO流的思維導(dǎo)圖吧。showImg(https://segmen...

    pkhope 評論0 收藏0
  • Java編程基礎(chǔ)23——IO(其他)&Properties

    摘要:但它融合了和的功能。支持對隨機(jī)訪問文件的讀取和寫入。的概述和作為集合的使用了解的概述類表示了一個(gè)持久的屬性集??杀4嬖诹髦谢驈牧髦屑虞d。屬性列表中每個(gè)鍵及其對應(yīng)值都是一個(gè)字符串。 1_序列流(了解) 1.什么是序列流 序列流可以把多個(gè)字節(jié)輸入流整合成一個(gè), 從序列流中讀取數(shù)據(jù)時(shí), 將從被整合的第一個(gè)流開始讀, 讀完一個(gè)之后繼續(xù)讀第二個(gè), 以此類推. 2.使用方式 整合兩個(gè): S...

    vvpale 評論0 收藏0
  • 字節(jié)-Java8新特性之Stream(上)

    摘要:需要注意的是很多流操作本身就會返回一個(gè)流,所以多個(gè)操作可以直接連接起來,如下圖這樣,操作可以進(jìn)行鏈?zhǔn)秸{(diào)用,并且并行流還可以實(shí)現(xiàn)數(shù)據(jù)流并行處理操作。為集合創(chuàng)建并行流。 上一篇文章,小樂給大家介紹了《Java8新特性之方法引用》,下面接下來小樂將會給大家介紹Java8新特性之Stream,稱之為流,本篇文章為上半部分。 1、什么是流? Java Se中對于流的操作有輸入輸出IO流,而Jav...

    dingda 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<