欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Io流學(xué)習(xí)-創(chuàng)新互聯(lián)

一、概念

流:數(shù)據(jù)流是一組有順序的,有起點(diǎn)和終點(diǎn)的字節(jié)集合,是對輸入和輸出的抽象

在棗強(qiáng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、做網(wǎng)站 網(wǎng)站設(shè)計制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),棗強(qiáng)網(wǎng)站建設(shè)費(fèi)用合理。

流的劃分

  • 數(shù)據(jù)傳輸方法:輸入流,輸出流;參照物為內(nèi)存,數(shù)據(jù)從內(nèi)存到磁盤為輸出,從磁盤到內(nèi)存為輸入。

  • 處理的數(shù)據(jù)單元:字節(jié)流和字符流

  • 節(jié)點(diǎn)流和處理流:節(jié)點(diǎn)流指的是向指定數(shù)據(jù)源進(jìn)行數(shù)據(jù)處理,處理則是從流中進(jìn)行數(shù)據(jù)的操作

體系結(jié)構(gòu)

抽象基類

InputStream(字節(jié)輸入)

OutputStream(字節(jié)輸出)

Writer(字符輸出)

Reader(字符輸入)

緩沖流:緩沖流通過定義緩沖區(qū)(內(nèi)存中),一次性讀取大量數(shù)據(jù)存入緩沖區(qū),解決內(nèi)存和磁盤傳輸效率低下的問題。(個人理解,如有補(bǔ)充,小編跪謝)

二、入門案例

1.使用字節(jié)流及其緩沖實(shí)現(xiàn)文件復(fù)制

package FileSty;

import java.io.*;

public class CopyAndTime {
    public static void main(String[] args) {
        String src = "E:/pic/34.jpg";
        String desc = "E:/pic/pic1/34.jpg";
        //
//        new CopyFileByte().countTime(src, desc);// 共耗時2988毫秒
//        new CopyFileBuffer().countTime(src, desc);//  共耗時27毫秒
        // 讀取一個字節(jié)數(shù)組
//      new CopyFileByte().countTime(src, desc);//共耗時6毫秒
        new CopyFileBuffer().countTime(src, desc);//  共耗時3毫秒


    }

}
abstract class CopyFile{
    abstract void copyFile(String src, String desc);
    public  void countTime(String src, String desc){
        long start = System.currentTimeMillis();
        copyFile(src, desc);
        long end = System.currentTimeMillis();
        System.out.println("共耗時"+(end-start)+"毫秒");
    }
}
class CopyFileByte extends CopyFile{
    @Override
    void copyFile(String src, String desc) {
//        判斷文件是否存在
        File srcFile = new File(src);
        if (!srcFile.exists())
            return;
//        建立輸入輸出流進(jìn)行數(shù)據(jù)讀寫
        FileInputStream fi =null;
        FileOutputStream  fo = null;
        try{
            fi = new FileInputStream(srcFile);
            fo = new FileOutputStream(desc);
 
            byte [] buf = new byte[1024];
            int len;
            while ((len = fi.read(buf)) != -1){
                fo.write(buf, 0, len);
            }
        }catch (FileNotFoundException e){
            System.out.println("文件不存在");
        }catch(IOException e){
            e.printStackTrace();
        }
        finally {
            try{
                if (fi != null)
                    fi.close();
                if(fo != null)
                    fo.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}
class CopyFileBuffer extends  CopyFile{
    @Override
    void copyFile(String src, String desc) {
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try{
            bis = new BufferedInputStream(new FileInputStream(src));
            bos = new BufferedOutputStream(new FileOutputStream(desc));
            byte[] buf = new byte[1024];
            int len;
            while ((len = bis.read(buf)) != -1 ){
                bos.write(buf, 0, len);
            }
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                bos.close();
                bis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

一些說明:理論上,字節(jié)流(1個字節(jié)8個二進(jìn)制位)可以用于讀取任何文件,但部分會出現(xiàn)編碼問題,多用于讀取圖片、視頻、音頻等文件。

2.字符流實(shí)現(xiàn)文本文件的拷貝


// 此處異常已拋出
        BufferedReader bis = new BufferedReader(new FileReader("E:\\fileTest\\test3.txt"));
        BufferedWriter bos = new BufferedWriter(new FileWriter("E:\\fileTest\\test4.txt"));
        char[] chs = new char[1024];
        String line;
        int lineNum = 1;
        StringBuilder sb ;
// 逐行讀取
        while ((line = bis.readLine()) != null){
// 添加行號
            sb = new StringBuilder(lineNum++ + "").append(line);
// 逐行寫入,并換行
// WruteLine(),ReadLine()為BufferedWriter擴(kuò)展的方法
            bos.write(sb.toString());
            bos.newLine();
        }
        bis.close();
        bos.close();

3. 字節(jié)流讀取指定編碼文件

數(shù)據(jù)源(本地ide的編碼為utf8)

使用字節(jié)流讀取

public class Test {
    public static void main(String[] args) throws IOException {
        String src = "E:\\fileTest\\Test\\test.txt";
        FileInputStream fi = new FileInputStream(src);
        int len;
        // 準(zhǔn)備一個足夠大字節(jié)數(shù)組,不會出現(xiàn)編碼問題
        byte [] by = new byte[1024];
        while ((len = fi.read(by)) != -1){
            System.out.println(new String(by, 0, len));
        }
    }
}

不出意外,亂碼了

改用字符流讀取

public class Test {
    public static void main(String[] args) throws IOException {
        String src = "E:\\fileTest\\Test\\test.txt";
        FileReader fi = new FileReader(src);
        int len;
        // 準(zhǔn)備一個足夠大字節(jié)數(shù)組,不會出現(xiàn)編碼問題
        char [] by = new char[1024];
        while ((len = fi.read(by)) != -1){
            System.out.println(new String(new String(by, 0, len).getBytes("gbk")));
// 這里的亂碼可能是我理解不夠,代碼有問題
        }
    }
}

依然讀取失敗

使用轉(zhuǎn)換流讀取

public class Test {
    public static void main(String[] args) throws IOException {
        String src = "E:\\fileTest\\Test\\test.txt";
        FileInputStream fi = new FileInputStream(src);
        InputStreamReader isr = new InputStreamReader(fi, "gbk");
        int len;
        // 準(zhǔn)備一個足夠大字節(jié)數(shù)組,不會出現(xiàn)編碼問題
        char [] by = new char[1024];
        while ((len = isr.read(by)) != -1){
            System.out.println(new String(by, 0, len));
        }
    }
}

成功讀取到文件內(nèi)容 ,可認(rèn)為,轉(zhuǎn)換為可以將字節(jié)流讀取的字節(jié)序列按照指定的編碼規(guī)則轉(zhuǎn)換為字符

4.序列化和反序列化的使用

package WriterAndReader;

import java.io.*;

@SuppressWarnings("all")
public class Seri {
    public static void main(String[] args) throws IOException,ClassNotFoundException {
//        序列化:將數(shù)據(jù)和它的數(shù)據(jù)類型轉(zhuǎn)換為字節(jié)序列
//        反序列化:將某個序列化產(chǎn)生的字節(jié)序列恢復(fù)
        // 序列化
        Demo demo = new Demo(1, "阿歡", 37.0);
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\fileTest\\Demo.bin"));
        oos.writeObject(demo);
        // 反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\fileTest\\Demo.bin"));
        System.out.println(ois.readObject());

    }
}
// 一個對像要序列化,則這個類必須實(shí)現(xiàn) Serializable 或 Externalizable
// 一般實(shí)現(xiàn)Serializable接口,不需要進(jìn)行方法實(shí)現(xiàn)
class Demo implements Serializable{
        Integer id;
        String name;
        // 不需要序列化的屬性可以通過transient進(jìn)行標(biāo)識
        transient Double temperature;

    public Demo(Integer id, String name, Double temperature) {
        this.id = id;
        this.name = name;
        this.temperature = temperature;
    }

    @Override
    public String toString() {
        return "Demo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", temperature=" + temperature +
                '}';
    }
}

運(yùn)行結(jié)果

5.結(jié)合Propertis使用

Properties是HashMap的子類,存儲鍵值對,支持從輸入流中加載配置文件到Propertie集合,也可用于將Properties集合中的鍵值對寫入配置文件,寫入格式為String T?= String V,默認(rèn)鍵和值為String類型,key重復(fù)時相當(dāng)于更新配置文件。

6.bio、nio、aio

BIO:線程發(fā)起IO請求到IO結(jié)束,線程一直阻塞,直到操作完成。
NIO:線程發(fā)起IO請求,立即返回,期間可以做其他事;當(dāng)內(nèi)核有可用IO資源時,通過調(diào)用注冊的回調(diào)函數(shù)通知線程做IO操作,線程開始阻塞,直到操作完成。
AIO:線程發(fā)起IO請求,立即返回;內(nèi)存做好IO操作的準(zhǔn)備之后,做IO操作,直到操作完成或者失敗,通過調(diào)用注冊的回調(diào)函數(shù)通知線程做IO操作完成或者失敗。

BIO是一個連接一個線程。
NIO是一個請求一個線程。
AIO是一個有效請求一個線程。

BIO:同步并阻塞,服務(wù)器實(shí)現(xiàn)模式為一個連接一個線程,即客戶端有連接請求時服務(wù)器端就需要啟動一個線程進(jìn)行處理,如果這個連接不做任何事情會造成不必要的線程開銷,當(dāng)然可以通過線程池機(jī)制改善。
NIO:同步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個請求一個線程,即客戶端發(fā)送的連接請求都會注冊到多路復(fù)用器上,多路復(fù)用器輪詢到連接有I/O請求時才啟動一個線程進(jìn)行處理。
AIO:異步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個有效請求一個線程,客戶端的I/O請求都是由OS先完成了再通知服務(wù)器應(yīng)用去啟動線程進(jìn)行處理。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前題目:Io流學(xué)習(xí)-創(chuàng)新互聯(lián)
鏈接地址:http://aaarwkj.com/article22/jccjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、ChatGPT、網(wǎng)站營銷建站公司、電子商務(wù)、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
91蜜臀在线视频播放| 午夜男女激情在线观看| 国产精品黑丝美女91| 日韩在线视频网站不卡| 一区二区亚洲国产精品| 九色国产一区二区三区| 亚洲伦理一区二区三区中文| 加藤桃香中文字幕在线| 在线国产精品中文字幕| 国产精品亚洲二区三区三州| 亚洲精品一区二区99| 亚洲精品成人久久网| 激情五月婷婷我有我色| 日韩国产欧美亚洲一区不卡| 久久精品国产亚洲av超一| 免费亚洲老熟熟女熟女熟女| 色哟哟在线观看精品一区| 97国产精品视频在线观看| 久久精品国产亚洲av久一一区| 亚洲三级成人一区在线| 久久男女激情免费视频| 成人av久久一区二区三区| 国内极品尤物视频在线| 午夜最新福利在线视频| 日韩av黄色大片在线播看| 欧美电影剧情av在线| 日韩新片一区二区三区| 亚洲另类偷拍校园伦理| 亚洲综合福利视频网站| 国产成人综合亚洲不卡| 欧美激情韩国三级日本| 欧美一区二区三区高清在线| 成人短篇在线视频夫妻刺激自拍| 亚洲一区欧美日韩91| 91久久国产香蕉熟女| 亚洲精品国产av一区二区三区| 青青草原在线观看网站| 欧美日韩一区二区午夜福利| 国产精品国产三级国产普通话99| 亚洲国产欧美日韩一区| 久久国产精品99亚洲|