18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

什么是I/O?

汽車電子技術(shù) ? 來源:程序猿知秋 ? 作者:程序猿知秋 ? 2023-01-20 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是I/O?

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

流(Stream)

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

流涉及到三個基本操作:

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

因為流的特性,可能并不是所有的流都支持這三種操作,所以Stream提供了三個屬性,以方便確認流是否支持這三種操作:

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

**以上這三個屬性均由子類根據(jù)自身特性確認是否支持讀取、寫入、查找,可能三個屬性不會都為true,但絕對不會都為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ū)懭胛募?,關(guān)閉文件等

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

FileStream 類

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

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:打開一個已有的文件,并將光標放置在文件的末尾。如果文件不存在,則創(chuàng)建文件。Create:創(chuàng)建一個新的文件。如果文件已存在,則刪除舊文件,然后創(chuàng)建新文件。CreateNew:指定操作系統(tǒng)應(yīng)創(chuàng)建一個新的文件。如果文件已存在,則拋出異常。Open:打開一個已有的文件。如果文件不存在,則拋出異常。OpenOrCreate:指定操作系統(tǒng)應(yīng)打開一個已有的文件。如果文件不存在,則用指定的名稱創(chuàng)建一個新的文件打開。Truncate:打開一個已有的文件,文件一旦打開,就將被截斷為零字節(jié)大小。然后我們可以向文件寫入全新的數(shù)據(jù),但是保留文件的初始創(chuàng)建日期。如果文件不存在,則拋出異常。
FileAccess FileAccess 枚舉的成員有:Read、ReadWrite和Write。
FileShare FileShare枚舉的成員有:Inheritable:允許文件句柄可由子進程繼承。Win32 不直接支持此功能。None:謝絕共享當前文件。文件關(guān)閉前,打開該文件的任何請求(由此進程或另一進程發(fā)出的請求)都將失敗。Read:允許隨后打開文件讀取。如果未指定此標志,則文件關(guān)閉前,任何打開該文件以進行讀取的請求(由此進程或另一進程發(fā)出的請求)都將失敗。但是,即使指定了此標志,仍可能需要附加權(quán)限才能夠訪問該文件。ReadWrite:允許隨后打開文件讀取或?qū)懭?。如果未指定此標志,則文件關(guān)閉前,任何打開該文件以進行讀取或?qū)懭氲恼埱螅ㄓ纱诉M程或另一進程發(fā)出)都將失敗。但是,即使指定了此標志,仍可能需要附加權(quán)限才能夠訪問該文件。Write:允許隨后打開文件寫入。如果未指定此標志,則文件關(guān)閉前,任何打開該文件以進行寫入的請求(由此進程或另一進過程發(fā)出的請求)都將失敗。但是,即使指定了此標志,仍可能需要附加權(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()
{
    // 定義一個streamWriter寫一個文件
    string[] nameArray = { "張三", "李四", "王五" };
    // 使用using,用完后能自動關(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;
        // 當值為null,說明已經(jīng)讀完了文件
        while ((line =sr.ReadLine())!= null)
        {
            Console.WriteLine(line);
        }
    }


}

輸出結(jié)果

張三
李四
王五

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

復(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);
    }




    // 生成一個新的圖片
    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)建、移動、瀏覽目錄和子目錄的方法。該類不能被繼承
  • FileInfo 類派生自 FileSystemInfo 類。它提供了用于創(chuàng)建、復(fù)制、刪除、移動、打開文件的屬性和方法,且有助于 FileStream 對象的創(chuàng)建。該類不能被繼承

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

static void test4()
{
    // 創(chuàng)建一個 DirectoryInfo 對象
    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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 輸入設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

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

    關(guān)注

    0

    文章

    38

    瀏覽量

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

    關(guān)注

    0

    文章

    12

    瀏覽量

    2168
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    I/O電路中電壓比較器與I/O信號完整性介紹

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

    物理約束實踐:I/O約束

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

    數(shù)字I/O介紹

    數(shù)字I/O腳有專用和復(fù)用。數(shù)字I/O腳的功能通過9個16位控制寄存器來控制??刂萍拇嫫鞣譃閮深悾海?)I/
    發(fā)表于 09-16 12:20 ?19次下載

    冗余I/O

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

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

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

    什么是I/O地址

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

    I/O擴展(8255)模塊

    為用戶在中提供一個I/O 擴展的方法,在設(shè)計過程遇到I/O不夠用時可以用此種方案。
    發(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 ?4972次閱讀
    介紹 <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模塊的價格占PLC價格的一半以上。PLC的IO模塊有開關(guān)量IO模塊、模擬量
    發(fā)表于 05-19 08:54 ?1w次閱讀
    PLC的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊如何選擇

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

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

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

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

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

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

    直接I/O

    電子發(fā)燒友網(wǎng)站提供《直接I/O庫.pdf》資料免費下載
    發(fā)表于 10-14 10:55 ?0次下載
    直接<b class='flag-5'>I</b>/<b class='flag-5'>O</b>庫

    I/O接口與I/O端口的區(qū)別

    在計算機系統(tǒng)中,I/O接口與I/O端口是實現(xiàn)CPU與外部設(shè)備數(shù)據(jù)交換的關(guān)鍵組件,它們在功能、結(jié)構(gòu)、作用及運作機制上均存在顯著差異,卻又相互協(xié)同工作,共同構(gòu)建起CPU與外部設(shè)備之間的橋梁
    的頭像 發(fā)表于 02-02 16:00 ?2308次閱讀