色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是I/O?

汽車電子技術(shù) ? 來源:程序猿知秋 ? 作者:程序猿知秋 ? 2023-01-20 17:16 ? 次閱讀

什么是I/O?

  • I/O 的全稱是input/output,即輸入和輸入設(shè)備,常見的輸入設(shè)備有:鍵盤、鼠標(biāo),輸出設(shè)備則比如 顯示器、音響 這樣的。
  • 對(duì)程序而言,IO就是與外面數(shù)據(jù)交換的方式, 數(shù)據(jù)向程序里面錄入就是 輸入,從程序往流出就是 輸出
  • IO在程序中的作用就是將數(shù)據(jù)轉(zhuǎn)換成 字節(jié),然后進(jìn)行交互

流(Stream)

C#中,所有流都是繼承自Stream類,Stream類定義了流應(yīng)該具有的行為和屬性,使得開發(fā)人員可以忽略底層的操作系統(tǒng)和基礎(chǔ)設(shè)備的具體細(xì)節(jié)。C#對(duì)流的處理忽略了讀流和寫流的區(qū)別,使其更像是一個(gè)管道,方便數(shù)據(jù)通信

流涉及到三個(gè)基本操作:

  • 讀取 - 將數(shù)據(jù)從流中傳輸?shù)綌?shù)據(jù)結(jié)構(gòu)中
  • 寫入 - 將數(shù)據(jù)從數(shù)據(jù)源寫入流中
  • 查找 - 對(duì)流中操作的當(dāng)前位置進(jìn)行查找和修改

因?yàn)榱鞯奶匦裕赡懿⒉皇撬械牧鞫贾С诌@三種操作,所以Stream提供了三個(gè)屬性,以方便確認(rèn)流是否支持這三種操作:

  • public abstract bool CanRead { get; } // 獲取指示當(dāng)前流是否支持讀取的值
  • public abstract bool CanWrite { get; } // 獲取指示當(dāng)前流是否支持寫入功能的值
  • public abstract bool CanSeek { get; } // 獲取指示當(dāng)前流是否支持查找功能的值

**以上這三個(gè)屬性均由子類根據(jù)自身特性確認(rèn)是否支持讀取、寫入、查找,可能三個(gè)屬性不會(huì)都為true,但絕對(duì)不會(huì)都為false。
**

讀寫類

  • 字節(jié)流
    • BinaryReader和BinaryWriter
    • 字節(jié)流用來處理,人看不懂的內(nèi)容,如圖片、視頻等文件用文本打開看不懂的內(nèi)容
  • 字符流
    • TextReader和TextWriter
      • ****StreamReader和StreamWriter
      • StringReader和StringWriter
    • **用來處理人能看懂的內(nèi)容,用文本打開能看懂的內(nèi)容,如:自己寫的各種文本內(nèi)容
      **

常見的IO類

System.IO 命名空間有各種不同的類,用于執(zhí)行各種文件操作,如創(chuàng)建和刪除文件、讀取或?qū)懭胛募P(guān)閉文件等

I/O 類 描述
BinaryReader 從二進(jìn)制流讀取原始數(shù)據(jù)。
BinaryWriter 以二進(jìn)制格式寫入原始數(shù)據(jù)。
BufferedStream 字節(jié)流的臨時(shí)存儲(chǔ)。
Directory 有助于操作目錄結(jié)構(gòu)。
DirectoryInfo 用于對(duì)目錄執(zhí)行操作。
DriveInfo 提供驅(qū)動(dòng)器信息
File 有助于處理文件。
FileInfo 用于對(duì)文件執(zhí)行操作。
FileStream 用于文件中任何位置的讀寫。
MemoryStream 用于隨機(jī)訪問存儲(chǔ)在內(nèi)存中的數(shù)據(jù)流。
Path 對(duì)路徑信息執(zhí)行操作。
StreamReader 用于從字節(jié)流中讀取字符。
StreamWriter 用于向一個(gè)流中寫入字符。
StringReader 用于讀取字符串緩沖區(qū)。
StringWriter 用于寫入字符串緩沖區(qū)。

FileStream 類

用FileStream來創(chuàng)建或讀取一個(gè)文件對(duì)象,語法如下:

FileStream <object_name> = new FileStream( <file_name>,
<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

**如下,讀取aa.txt文件的內(nèi)容
**

FileStream fileStream = new FileStream(@"D:\\c#workspace\\練習(xí)\\aa.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
參數(shù) 描述
FileMode FileMode 枚舉定義了各種打開文件的方法。FileMode 枚舉的成員有:Append:打開一個(gè)已有的文件,并將光標(biāo)放置在文件的末尾。如果文件不存在,則創(chuàng)建文件。Create:創(chuàng)建一個(gè)新的文件。如果文件已存在,則刪除舊文件,然后創(chuàng)建新文件。CreateNew:指定操作系統(tǒng)應(yīng)創(chuàng)建一個(gè)新的文件。如果文件已存在,則拋出異常。Open:打開一個(gè)已有的文件。如果文件不存在,則拋出異常。OpenOrCreate:指定操作系統(tǒng)應(yīng)打開一個(gè)已有的文件。如果文件不存在,則用指定的名稱創(chuàng)建一個(gè)新的文件打開。Truncate:打開一個(gè)已有的文件,文件一旦打開,就將被截?cái)酁榱阕止?jié)大小。然后我們可以向文件寫入全新的數(shù)據(jù),但是保留文件的初始創(chuàng)建日期。如果文件不存在,則拋出異常。
FileAccess FileAccess 枚舉的成員有:Read、ReadWrite和Write。
FileShare FileShare枚舉的成員有:Inheritable:允許文件句柄可由子進(jìn)程繼承。Win32 不直接支持此功能。None:謝絕共享當(dāng)前文件。文件關(guān)閉前,打開該文件的任何請(qǐng)求(由此進(jìn)程或另一進(jìn)程發(fā)出的請(qǐng)求)都將失敗。Read:允許隨后打開文件讀取。如果未指定此標(biāo)志,則文件關(guān)閉前,任何打開該文件以進(jìn)行讀取的請(qǐng)求(由此進(jìn)程或另一進(jìn)程發(fā)出的請(qǐng)求)都將失敗。但是,即使指定了此標(biāo)志,仍可能需要附加權(quán)限才能夠訪問該文件。ReadWrite:允許隨后打開文件讀取或?qū)懭搿H绻粗付ù藰?biāo)志,則文件關(guān)閉前,任何打開該文件以進(jìn)行讀取或?qū)懭氲恼?qǐng)求(由此進(jìn)程或另一進(jìn)程發(fā)出)都將失敗。但是,即使指定了此標(biāo)志,仍可能需要附加權(quán)限才能夠訪問該文件。Write:允許隨后打開文件寫入。如果未指定此標(biāo)志,則文件關(guān)閉前,任何打開該文件以進(jìn)行寫入的請(qǐng)求(由此進(jìn)程或另一進(jìn)過程發(fā)出的請(qǐng)求)都將失敗。但是,即使指定了此標(biāo)志,仍可能需要附加權(quán)限才能夠訪問該文件。Delete:允許隨后刪除文件。

使用示例

public static void Main()
{
    // 定義文件流
    FileStream fileStream = new FileStream(@"D:\\c#workspace\\練習(xí)\\aa.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
   
    for (int i = 1; i <= 20; i++)
    {
        fileStream.WriteByte((byte)i);
    }


    // 文件開頭開始讀取
    fileStream.Position = 0;
    for (int i = 0; i <= 20; i++)
    {
        Console.Write(fileStream.ReadByte() + " ");
    }
    //關(guān)閉流
    fileStream.Close();
    Console.ReadKey();
}

**輸出結(jié)果如下:
**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

字符流 StreamReader 和 StreamWriter 類

用于文本文件的數(shù)據(jù)讀寫。這些類從抽象基類 Stream 繼承,Stream 支持文件流的字節(jié)讀寫

讀寫文件案例

static void test2()
{
    // 定義一個(gè)streamWriter寫一個(gè)文件
    string[] nameArray = { "張三", "李四", "王五" };
    // 使用using,用完后能自動(dòng)關(guān)流
    using(StreamWriter sw=new StreamWriter(@"D:\\c#workspace\\練習(xí)\\aa.txt"))
    {
        foreach(string str in nameArray)
        {
            // 一次寫一行
            sw.WriteLine(str);
        }
    }




    // 讀取剛寫入的文件
    using(StreamReader sr=new StreamReader(@"D:\\c#workspace\\練習(xí)\\aa.txt"))
    {
        string line;
        // 當(dāng)值為null,說明已經(jīng)讀完了文件
        while ((line =sr.ReadLine())!= null)
        {
            Console.WriteLine(line);
        }
    }


}

輸出結(jié)果

張三
李四
王五

字節(jié)流 BinaryReader 和 BinaryWriter 類用于二進(jìn)制文件的讀寫

復(fù)制圖片案例

static void test3()
{
    // 復(fù)制圖片


    byte[] imgArray = null;
    //先讀取原圖
    FileStream fs = new FileStream(@"D:\\c#workspace\\練習(xí)\\img\\1.jpg", FileMode.Open);
    using(BinaryReader br=new BinaryReader(fs))
    {
        imgArray = br.ReadBytes((int)fs.Length);
    }




    // 生成一個(gè)新的圖片
    FileStream fs2 = new FileStream(@"D:\\c#workspace\\練習(xí)\\img\\aaa.jpg", FileMode.Create);
    using (BinaryWriter bw = new BinaryWriter(fs2))
    {
        bw.Write(imgArray);
    }


}

Windows 文件系統(tǒng)的操作

C# 允許您使用各種目錄和文件相關(guān)的類來操作目錄和文件,比如 DirectoryInfo 類和 FileInfo 類。

  • DirectoryInfo 類派生自 FileSystemInfo 類。它提供了各種用于創(chuàng)建、移動(dòng)、瀏覽目錄和子目錄的方法。該類不能被繼承
  • FileInfo 類派生自 FileSystemInfo 類。它提供了用于創(chuàng)建、復(fù)制、刪除、移動(dòng)、打開文件的屬性和方法,且有助于 FileStream 對(duì)象的創(chuàng)建。該類不能被繼承

讀取指定目錄下的所有文件列表案例

static void test4()
{
    // 創(chuàng)建一個(gè) DirectoryInfo 對(duì)象
    DirectoryInfo mydir = new DirectoryInfo(@"D:\\c#workspace\\練習(xí)");


    // 獲取目錄中的文件以及它們的名稱和大小
    FileInfo[] f = mydir.GetFiles();
    foreach (FileInfo file in f)
    {
        Console.WriteLine("File Name: {0} Size: {1}",
            file.Name, file.Length);
    }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 輸入設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    8490
  • i/o
    i/o
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    4589
  • 輸出設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    2070
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    I/O電路中電壓比較器與I/O信號(hào)完整性介紹

    在高速I/O電路設(shè)計(jì)中,輸入I/O的比較器是一個(gè)非常重要的模塊。
    的頭像 發(fā)表于 10-30 15:02 ?1738次閱讀
    <b class='flag-5'>I</b>/<b class='flag-5'>O</b>電路中電壓比較器與<b class='flag-5'>I</b>/<b class='flag-5'>O</b>信號(hào)完整性介紹

    物理約束實(shí)踐:I/O約束

    I/O約束(I/O Constraints)包括I/O標(biāo)準(zhǔn)(
    的頭像 發(fā)表于 11-18 16:42 ?1103次閱讀
    物理約束實(shí)踐:<b class='flag-5'>I</b>/<b class='flag-5'>O</b>約束

    數(shù)字I/O介紹

    數(shù)字I/O腳有專用和復(fù)用。數(shù)字I/O腳的功能通過9個(gè)16位控制寄存器來控制。控制寄存器分為兩類:(1)I/
    發(fā)表于 09-16 12:20 ?19次下載

    冗余I/O

    6.1 冗余I/O的定義當(dāng)I/O模塊以每兩個(gè)一組組態(tài)成冗余對(duì)運(yùn)行時(shí),I/O模板即認(rèn)為是冗余配置。
    發(fā)表于 07-23 00:29 ?26次下載

    基于Rocket I/O模塊的高速I/O設(shè)計(jì)

    摘要: 介紹了采用Videx-ⅡPR0系列FPCA設(shè)計(jì)的應(yīng)用于下一代無線通信系統(tǒng)中的高速IO。由于充分利用芯片中集成的Rocket IO模塊,并采用差分輸入?yún)⒖紩r(shí)鐘、
    發(fā)表于 06-20 10:45 ?1339次閱讀
    基于Rocket <b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊的高速<b class='flag-5'>I</b>/<b class='flag-5'>O</b>設(shè)計(jì)

    什么是I/O地址

    什么是I/O地址 I/O地址中I是input的簡寫,O是output的簡寫,也就是輸入輸出地址
    發(fā)表于 02-05 10:01 ?1346次閱讀

    I/O擴(kuò)展(8255)模塊

    為用戶在中提供一個(gè)I/O 擴(kuò)展的方法,在設(shè)計(jì)過程遇到I/O不夠用時(shí)可以用此種方案。
    發(fā)表于 07-04 17:12 ?0次下載

    Java I/O 的相關(guān)方法分析

    I/O,即 Input/Output(輸入/輸出) 的簡稱。就 I/O 而言,概念上有 5 種模型:blocking I/
    發(fā)表于 09-27 13:18 ?0次下載
    Java <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 的相關(guān)方法分析

    介紹 I/O NI系統(tǒng),C系列的I/O模塊

    內(nèi)容包括:理想的確定性以太網(wǎng)I/O,具有確定性分布式I/O的NI系統(tǒng),C系列的I/O模塊,與La
    的頭像 發(fā)表于 06-14 06:19 ?4576次閱讀
    介紹 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> NI系統(tǒng),C系列的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊

    PLC的I/O模塊如何選擇

    一般IO模塊的價(jià)格占PLC價(jià)格的一半以上。PLC的IO模塊有開關(guān)量IO模塊、模擬量
    發(fā)表于 05-19 08:54 ?9487次閱讀
    PLC的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊如何選擇

    關(guān)于標(biāo)準(zhǔn)I/O庫執(zhí)行I/O操作

    當(dāng)在輸入和輸出中遇到換行符時(shí),標(biāo)準(zhǔn)I/O庫執(zhí)行I/O操作。這允許我們一次輸出一個(gè)字符,但只有在寫了一行之后才進(jìn)行實(shí)際I/
    的頭像 發(fā)表于 07-01 17:17 ?2391次閱讀

    STM32單片機(jī)---I/O應(yīng)用

    STM32單片機(jī)---(二)I/O應(yīng)用stm32I/O簡介GPIO的8種工作模式stm32I/O
    發(fā)表于 12-17 18:33 ?18次下載
    STM32單片機(jī)---<b class='flag-5'>I</b>/<b class='flag-5'>O</b>應(yīng)用

    Linux I/O 接口的類型及處理流程

    Linux I/O 接口 Linux I/O 接口可以分為以下幾種類型: 文件 I/O 接口:用
    的頭像 發(fā)表于 11-08 16:43 ?945次閱讀
    Linux <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 接口的類型及處理流程

    FANUC外部I/O點(diǎn)數(shù)不夠用了怎么辦?可以擴(kuò)展I/O點(diǎn)數(shù)嗎?

    FANUC外部I/O點(diǎn)數(shù)不夠用了怎么辦?可以擴(kuò)展I/O點(diǎn)數(shù)嗎? 擴(kuò)展FANUC的外部I/O點(diǎn)數(shù)是
    的頭像 發(fā)表于 02-18 15:21 ?1863次閱讀

    直接I/O

    電子發(fā)燒友網(wǎng)站提供《直接I/O庫.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 10:55 ?0次下載
    直接<b class='flag-5'>I</b>/<b class='flag-5'>O</b>庫
    主站蜘蛛池模板: 亚洲 欧美 国产 综合五月天| 国产成人一区二区三区在线观看| 精品日韩视频| 午夜一级毛片看看| 公交车轮C关老师| 青青青青草原国产免费| 97国产视频| 美女被抽插到哭内射视频免费| 一个色夫导航| 精品九九视频| 亚洲天堂视频网站| 狠狠人妻久久久久久综合九色| 无颜之月全集免费观看| 国产精品免费大片一区二区| 乳色吐息未增删樱花ED在线观看| qvod电影网站| 日本伦理片 中文字幕| 憋尿调教绝望之岛| 日本伦理片 中文字幕| 成人在线免费视频播放| 日本一区精品久久久久影院| 啊叫大点声欠CAO的SAO贷| 秋霞影音先锋一区二区| 草莓视频cm.888tw| 日韩精品专区在线影院重磅| 成人毛片大全| 天天色天天综合网| 国产精品亚洲欧美| 亚洲AV无码一区二区色情蜜芽| 国产亚洲精品 在线视频 香蕉| 亚洲va精品中文字幕| 黑人巨大两根一起挤进欧美| 亚洲欧美中文字幕5发布| 精品无码久久久久久动漫| 伊人yinren6综合网色狠狠| 久久欧洲视频| 97精品视频在线观看| 欧美一级做a爰片免费| 第四色播日韩AV第一页| 玩弄朋友娇妻呻吟交换电影| 国产婷婷午夜无码A片|