Unity開發之C#基礎-File文件讀取

前言

今天我們將要講解到c#中 對于文件的讀寫是怎樣的 那么沒接觸過特別系統編程小伙伴們應該會有一個疑問 這跟文件有什么關系呢? 我們這樣來理解 首先 大家對電腦或多或少都應該有不少的了解吧 那么我們這些軟件 都是通過變成一個一個文件保存在電腦中 我們才可以去使用他們對吧 就好比下載一個軟件實際上就是把這個軟件的啟動條件也就是各種文件保存到電腦中而已 在比如 在我們開發或者玩游戲的時候很多游戲都有存檔吧 不能說我這關沒完玩 下次再玩直接就是消失了重新玩了 那也太變態了,其實對此 就涉及到了通過讀寫的操作 將我們想要保存的游戲數據 儲存到當前玩家的電腦當中 (單機游戲)普遍都是這樣 不過現在很多大型的游戲都是選擇把數據保存到服務器那邊 這樣不管你換手機也好還是異地登陸都可以繼承本來的數據 等等很多例子。下面我們初步了解以下 程序中的文件讀寫

文章目錄

  • 前言
  • 文件
    • 程序變量存儲位置
    • 程序中文件的介紹
    • 文件相關類
    • Path類
    • Directory類
    • File類
  • 流(Stream)
  • 流的分類
  • 讀寫器的分類
  • 小技巧
  • 總結

文件

程序變量存儲位置

在之前我們介紹過 比如 我們定義的int,float 等值類型變量 都會暫時存儲在“堆”“棧” 哪怕是參數 靜態成員 局部變量等等都是一樣 可這些存儲位置和存儲的數據只能供我們在運行程序時使用 一旦我們關閉了程序他們就會消失 如何將這些數據持久化呢 這就是我們接下來要學習的通過“流”的形式將數據保存在一個文件中 進行讀寫

程序中文件的介紹

  1. 文件是一種數據持久化的形式
  2. 有名稱,路徑
  3. 數據以字節的形式存儲在文件中
  4. 可通過”流“的形式讀寫

文件相關類

類名說明
Path靜態類,用于路徑,文件名字字符串處理
DIrectory靜態類,包含一些處理目錄的靜態方法
File靜態類,包含一些處理文件的靜態方法

我們來逐一的介紹一下這幾個類的使用方式

Path類

方法名說明
Combine將多個字符串加入/或者\拼接成一個路徑字符串
GetFileName獲取全路徑字符串中的文件名,包含后綴
GetExtension獲取全路徑字符串中的后綴
GetDirectoryName獲取全路徑字符串中的目錄部分
GetFullPath獲取全路徑
GetPathRoot獲取根路徑

我們創建一個新的項目 來好好試驗一下這些方法的作用 在此之前 大家先去各自的盤里創建一個新的txt文本文件來為我們一會使用做準備:
在這里插入圖片描述
我呢 在自己的e盤里創建了一個test文件夾 里面有創建了一個love的txt文本文檔。
在這里插入圖片描述

Directory類

方法名說明
CreateDirectory創建目錄
Delete刪除目錄
Exists判斷目錄是否存在
GetParent獲取父目錄
GetFIles獲取目錄中的文件
GetDirectories獲取目錄中的子目錄
Move移動目錄,包含其中的文件和子目錄

在這里插入圖片描述

File類

方法名說明
Create創建文件
Delete刪除文件
Exists判斷文件是否存在
WriteAllText將字符產寫入文件中
AriteAllBytes將字節數組寫入文件中
AppendAllText將字符串追加到文件中
ReadAllLines讀取文件的所有行,以字符串數組返回
ReadAllBytes讀取文件中的所有字節,以字節數組返回
Copy拷貝文件
Move移動文件

在這里插入圖片描述
這就是三個基本的文件類的方法使用,下面我們介紹另一種方式:流

流(Stream)

流(Stream)可以理解為內存中的字節序列,Stream是所有流的抽象基類
? 對流進行讀取——將流中的數據讀取到具體的數據結構中
? 對流進行寫入——把數據結構中的數據寫入到流中

流的分類

流分為兩種 字符流和字節流

  1. 字節流: 以字節為單位進行讀寫,能處理任何類型數據
  2. 字符流:以字符為單位進行讀寫,只能處理字符數據

在這里插入圖片描述
這幾個類 是我們要經常用到的:
3. NetworkStream——提供網絡通信的基礎數據流
4. FileStream——用于將數據以流的形式寫入文件,或從文件中讀取
5. MemoryStream——用于對內存中的數據進行寫入或讀取
6. GZipStream——提供用于壓縮和解壓縮流的數據

讀寫器的分類

Stream類是流的整體的父類 旗下還有我們經常使用的讀寫類 被稱為讀寫器類

  1. 文本讀寫器:TextReader TextWriter
  2. 字符串讀寫器: StringReader StringWriter
  3. 二進制讀寫器:BinaryReader BinaryWriter
  4. 流讀寫器:StreamReader StreamWriter

流的使用與基本的文件讀取 而且流的表達形式也不同 不過 基本上的表達方式是一致的
下面是一些基本的方法介紹:

StreamReader

構造器說明
StreamReader(Stream)在一個字節流上建立流讀取器,用于讀取字符
StreamReader(string)在文件上建立流讀取器,用于讀取字符
StreamReader(Stream,Encoding)可指定字符集
StreamReader(string,Encoding)可知道字符集
方法說明
Read都一個字符并返回,如到達底部返回-1
ReadLine讀一行字并返回一字符串,如到達底部返回null
ReadToEnd讀全部文本,返回一字符串
Close關閉

StreamWriter

構造器說明
StreamWriter(Stream)在一個字節流上建立流寫出器,用于寫字符
StreamWriter(string)在文件上建立流寫出器,用于寫字符
StreamWriter(Stream,Encoding)可指定字符集
方法說明
Write具有多個重載,都以字符形式寫數據
WriteLine具有多個重載,都以字符形式寫數據,結尾會換行
AutoFlush可設置或查詢是否自動刷緩存
Flush強制刷緩存
Close關閉

小技巧

在這里插入圖片描述
在這里插入圖片描述

總結

對于文件讀取寫入等操作有太多需要使用的方法等 需要大家嘗試各種方法的使用 代碼也是萬變不離其宗的 下期我們講解最后一章委托的使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【2023C卷最新題目】20天拿下華為OD筆試之【貪心】2023C-找座位/2023B-座位調整-全網注釋最詳細分類最全的華為OD真題題解

文章目錄 題目描述與示例題目描述輸入輸出說明示例一輸入輸出 示例二輸入輸出說明 解題思路代碼PythonJavaC時空復雜度 相同問題不同描述2023C-找座位題目描述輸入描述輸出描述示例一輸入輸出 示例二輸入輸出 華為OD算法/大廠面試高頻題算法練習沖刺訓練 題目描述與示例 題目描…

Spring Boot創建和使用(重要)

Spring的誕生是為了簡化Java程序開發的! Spring Boot的誕生是為了簡化Spring程序開發的! Spring Boot就是Spring框架的腳手架,為了快速開發Spring框架而誕生的!! Spring Boot的優點: 快速集成框架&#x…

2023年G2電站鍋爐司爐證考試題庫及G2電站鍋爐司爐試題解析

題庫來源:安全生產模擬考試一點通公眾號小程序 2023年G2電站鍋爐司爐證考試題庫及G2電站鍋爐司爐試題解析是安全生產模擬考試一點通結合(安監局)特種作業人員操作證考試大綱和(質檢局)特種設備作業人員上崗證考試大綱…

MySQL 事務的底層原理和 MVCC(一)

在事務的實現機制上,MySQL 采用的是 WAL(Write-ahead logging,預寫式日志)機制來實現的。 在使用 WAL 的系統中,所有的修改都先被寫入到日志中,然后再被應用到系統中。通常包含 redo 和 undo 兩部分信息。 …

【Java開發】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介紹 1.1簡介 Mybatis-Flex 是一個優雅的 Mybatis 增強框架,它非常輕量、同時擁有極高的性能與靈活性。我們可以輕松的使用 Mybaits-Flex 鏈接任何數據庫,其內置的 QueryWrapper 亮點幫助我們極大的減少了 SQL 編寫的工作的同時&#xff…

cocos2dx ??Animate3D(二)

Twirl 扭曲旋轉特效 // 持續時間(時間過后不會回到原來的樣子) // 整個屏幕被分成幾行幾列 // 扭曲中心位置 // 扭曲的數量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…

編程語言發展史:C語言的誕生及其影響

預計更新 第一部分:早期編程語言 1.1布爾代數和機器語言 1.2匯編語言的出現和發展 1.3高級語言的興起 第二部分:主流編程語言 1.1 C語言的誕生及其影響 1.2 C語言的發展和應用 1.3 Java語言的出現和發展 1.4 Python語言的興起和特點 1.5 JavaScript語言…

基于springboot實現攝影跟拍預定管理系統【項目源碼+論文說明】計算機畢業設計

基于springboot實現攝影跟拍預定管理系統演示 摘要 首先,論文一開始便是清楚的論述了系統的研究內容。其次,剖析系統需求分析,弄明白“做什么”,分析包括業務分析和業務流程的分析以及用例分析,更進一步明確系統的需求。然后在明白了系統的需求基礎上需要進一步地設計系統,主要…

【2018年數據結構真題】

方法一 給定一個含n(n>1)個整數的數組,請設計一個在時間上盡可能高效的算法,找出數組中未出現的最小正整數。例如,數組{-5,3,2,3}中未出現的最小正整數是1;數組{1,2,…

AIGC變革BI行業,永洪發布vividime全球化品牌

大數據產業創新服務媒體 ——聚焦數據 改變商業 國內BI商業智能市場,一直有著“內永洪,外Tableau”的說法。成立于2012年的永洪科技經過十多年的發展,早已崛起為國內大數據行業的一支勁旅。 ChatGPT火爆出圈之后,AIGC快速滲透&am…

每日一練 | 華為認證真題練習Day19

Day19 華為認證中級考試真題 1、DHCP協議運行過程中,客戶端從申請到IP地址時的流程是 A.1-2-3-4 B.1-4-3-2 C.3-2-1-4 D.3-4-1-2 2、VRRP報文的IP協議號是: A.112 B.114 C.116 D.118 3、MPLS的標簽字段共有多少bit? A.8 B.3 C.1 D.20 4…

【C++】vector的介紹與使用

🧑?🎓個人主頁:簡 料 🏆所屬專欄:C 🏆個人社區:越努力越幸運社區 🏆簡 介:簡料簡料,簡單有料~在校大學生一枚,專注C/C/GO的干貨分…

2020年下半年試題一:論信息系統項目的成本管理

論文題目 1.概要敘述你參與過的信息系統項目(項目的背景、項目規模、發起單位、目的、項目內容、組織結構、項目周期、交付的成果等),并說明你在其中承擔的工作(項目背景要求本人真實經歷,不得抄襲及杜撰)。…

編程語言發展史:匯編語言的出現和發展

一、匯編語言的出現 隨著計算機硬件的發展,機器語言變得越來越復雜,難以被人類程序員理解和編寫。因此,出現了更高級別的編程語言,這些語言使用類似英語的語法,使程序員能夠更容易地編寫和維護程序。 其中一種高級語…

web網頁滲透測試

web網頁滲透測試 流程 信息收集網站掃描訪問控制測試漏洞掃描嘗試注入攻擊驗證漏洞后滲透測試滲透測試報告 信息收集 收集目標網站的基本信息,包括域名、IP 地址、子域名等。使用 WHOIS 查詢、搜索引擎、子域名枚舉工具等進行信息收集。 網站掃描 使用端口掃描…

【Java 進階篇】Redis 數據結構:輕松駕馭多樣性

引言 Redis是一款強大的鍵值對存儲系統,其數據結構的多樣性是其引以為傲的特點之一。在這篇博客中,我們將深入探討Redis的主要數據結構,包括字符串、哈希表、列表、集合和有序集合,并通過實例代碼演示它們的用法。 1. 字符串&am…

在中國企業出海的大浪潮下,亞馬遜云科技提供遍及全球的基礎設施和技術支持

中國技術出海是中國企業更高層次更高質量的全球化。在人類文明發展史上,凝聚中國古人智慧結晶的造紙術、印刷術、火藥、指南針等,曾為中國技術出海寫下過濃墨重彩的一筆。在今天,如金山辦公、店匠科技、ADVANCE.AI等公司又以技術立業&#xf…

msvcp140.dll是什么?msvcp140.dll丟失的有哪些解決方法

在計算機使用過程中,我們經常會遇到一些錯誤提示,其中之一就是“msvcp140.dll丟失”。這個錯誤通常會導致某些應用程序無法正常運行。為了解決這個問題,我們需要采取一些措施來修復丟失的msvcp140.dll文件。本文將詳細介紹5個解決msvcp140.dl…

Day27|Leetcode 39. 組合總和 Leetcode 40. 組合總和 II Leetcode131. 分割回文串

Leetcode 39. 組合總和 題目鏈接 39 組合總和 本題目和前面的組合問題差不多,只不過這里能重復選取數字,還是要注意組合的定義,交換數字順序還是算一個組合,所以這里還是用我們的startIndex來記錄取的數字到哪里了,下…

阿里云發送短信

官方代碼如下: // This file is auto-generated, dont edit it. Thanks. package com.aliyun.sample;import com.aliyun.tea.*;public class Sample {/*** 使用AK&SK初始化賬號Client* param accessKeyId* param accessKeySecret* return Client* throws Excep…