欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#對(duì)文件、目錄I/O操作全面總結(jié),值得收藏!

admin
2023年12月26日 23:34 本文熱度 644

【目錄】
1.文件和錄的創(chuàng)建與刪除
2.文件讀寫(xiě)操作
3.文件復(fù)制和移動(dòng)
4.文件信息和屬性
5.目錄遍歷
6.異常處理
7.文件存在性檢查
8.路徑操作
9.異步文件讀寫(xiě)
10. 特殊文件夾路徑獲取
11.文件屬性設(shè)置
12.文件鎖定檢查(贊)
13.文件流操
14.監(jiān)視文件變化(贊)
15.文件內(nèi)容比較
16.文件壓縮與解壓縮
17.文件路徑規(guī)范化
18.使用MemoryMappedFile進(jìn)行內(nèi)存映射文件操作
19.文件流異步操作
20.使用TransactionScope進(jìn)行文件事務(wù)操作(贊)

前言


本文將介紹C#處理文件的知識(shí)點(diǎn),在.NET開(kāi)發(fā)領(lǐng)域,文件系統(tǒng)I/O是一個(gè)至關(guān)重要的主題,尤其是在處理文件、目錄和數(shù)據(jù)存儲(chǔ)方面。


C#作為.NET平臺(tái)的主要編程語(yǔ)言,提供了豐富而強(qiáng)大的文件系統(tǒng)I/O功能,為開(kāi)發(fā)人員提供了靈活的工具,使其能夠高效地處理文件操作。本文將介紹C#處理文件系統(tǒng)I/O知識(shí)點(diǎn)。


1、文件和目錄的創(chuàng)建與刪除

在C#中,使用FileDirectory類(lèi)可以輕松地創(chuàng)建和刪除文件及目錄。開(kāi)發(fā)者應(yīng)了解如何使用這兩個(gè)類(lèi)的方法。

案例如下:

// 創(chuàng)建文件
File.Create("path/to/file.txt");
// 刪除文件
File.Delete("path/to/file.txt");
// 創(chuàng)建目錄
Directory.CreateDirectory("path/to/directory");

// 刪除目錄
Directory.Delete("path/to/directory"true); // 第二個(gè)參數(shù)表示是否遞歸刪除子目錄和文件

2、文件讀寫(xiě)操作

C#提供了強(qiáng)大的文件讀寫(xiě)功能,開(kāi)發(fā)者需要熟悉StreamReader和StreamWriter等類(lèi),以實(shí)現(xiàn)對(duì)文件的讀寫(xiě)操作。

下面是一個(gè)簡(jiǎn)單的例子:

// 讀取文件內(nèi)容
using (StreamReader reader = new StreamReader("path/to/file.txt"))
{
    string content = reader.ReadToEnd();
    Console.WriteLine(content);
}

// 寫(xiě)入文件內(nèi)容
using (StreamWriter writer = new StreamWriter("path/to/file.txt"))
{
    writer.WriteLine("Hello, C# File I/O!");
}

3、文件復(fù)制和移動(dòng)

在處理文件時(shí),復(fù)制和移動(dòng)是常見(jiàn)的操作。C#提供了File.Copy和File.Move等方法,可以輕松實(shí)現(xiàn)文件的復(fù)制和移動(dòng):

// 復(fù)制文件
File.Copy("source/path/file.txt""destination/path/file.txt");

// 移動(dòng)文件
File.Move("old/path/file.txt""new/path/file.txt");

4、文件信息和屬性

使用FileInfo類(lèi)可以獲取文件的詳細(xì)信息和屬性,例如文件大小、創(chuàng)建時(shí)間等:

FileInfo fileInfo = new FileInfo("path/to/file.txt");
Console.WriteLine($"File Size: {fileInfo.Length} bytes");
Console.WriteLine($"Creation Time: {fileInfo.CreationTime}");

5、目錄遍歷

了解如何遍歷目錄以獲取文件列表是一個(gè)重要的技能。Directory類(lèi)提供了GetFiles`和GetDirectories方法,可以返回指定目錄下的文件和子目錄。

案例如下:

// 獲取所有文件
string[] files = Directory.GetFiles("path/to/directory");

// 獲取所有子目錄
string[] directories = Directory.GetDirectories("path/to/directory");

6、異常處理

在進(jìn)行文件系統(tǒng)I/O操作時(shí),處理可能發(fā)生的異常是不可或缺的。可能的異常包括文件不存在、權(quán)限不足等。使用try-catch塊來(lái)捕獲這些異常,以確保應(yīng)用程序的穩(wěn)定性。

try
{
    // 文件操作代碼
}
catch (IOException ex)
{
    Console.WriteLine($"An IO exception occurred: {ex.Message}");
}
catch (UnauthorizedAccessException ex)
{
    Console.WriteLine($"Unauthorized access: {ex.Message}");
}

7、文件存在性檢查

在C#可以使用File.Exists方法檢查文件是否存在。

if (File.Exists("path/to/file.txt")){// 文件存在,執(zhí)行相應(yīng)操作}

8、路徑操作

路徑對(duì)于讀取自定義配置文件等有非常重要的作用。在C#可以使用Path類(lèi)來(lái)進(jìn)行路徑的合并、獲取文件名等操作。

codestring fullPath = Path.Combine("folder""subfolder""file.txt");
string fileName = Path.GetFileName(fullPath);

9、異步文件讀寫(xiě)

可以利用C#中的StreamReaderStreamWriter的異步方法,實(shí)現(xiàn)異步文件讀寫(xiě)操作。

// 異步讀取文件
using (StreamReader reader = new StreamReader("path/to/file.txt"))
{    
string content = await reader.ReadToEndAsync();    
Console.WriteLine(content);
}
// 異步寫(xiě)入文件
using (StreamWriter writer = new StreamWriter("path/to/file.txt"))
{    
await writer.WriteLineAsync("Hello, C# File I/O!");
}

10、 特殊文件夾路徑獲取

可以使用Environment.SpecialFolder枚舉和Environment.GetFolderPath方法獲取特殊文件夾的路徑。下面案例是獲取桌面文件路徑。

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Console.WriteLine($"Desktop Path: {desktopPath}");

11、文件屬性設(shè)置

使用File.SetAttributes方法設(shè)置文件屬性,例如將文件設(shè)置為只讀等。案例如下:

File.SetAttributes("path/to/file.txt", FileAttributes.ReadOnly);

12、文件鎖定檢查

大家常常會(huì)遇到文件鎖定的問(wèn)題不能讀寫(xiě)文件,在C#中可以用以下方法檢查文件是否被其他進(jìn)程鎖定。

private static bool IsFileLocked(string filePath)
{
    try
    {
        using (FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
        {           
         // 文件未被鎖定
         return false;     
        }    
    }    
    catch (IOException)    
    {        
         // 文件被鎖定        
         return true
    }
}
//調(diào)用bool isFileLocked = IsFileLocked("path/to/file.txt");
 //當(dāng)然還有其它方法,見(jiàn)文章:《C#判斷文件是否占用的2種方法》

13、文件流操

使用FileStream進(jìn)行文件流操作,例如讀取和寫(xiě)入文件。

using (FileStream fs = new FileStream("path/to/file.txt", FileMode.Open, FileAccess.Read))
{    
// 執(zhí)行文件流操作
}

14、監(jiān)視文件變化

在C#中可以使用FileSystemWatcher類(lèi)監(jiān)視文件變化,例如文件內(nèi)容的修改。

FileSystemWatcher watcher = new FileSystemWatcher("path/to/directory");
watcher.EnableRaisingEvents = true;
watcher.Changed += (sender, e) => Console.WriteLine($"File {e.FullPath} changed");

15、文件內(nèi)容比較

怎么比較兩個(gè)文件呢?可以使用File.ReadAllBytes方法轉(zhuǎn)換成字節(jié),然后用SequenceEqual方法來(lái)比較兩個(gè)文件是否相同。案例如下:

private static bool FileEquals(string filePath1, string filePath2) 

    byte[] file1 = File.ReadAllBytes(filePath1); 
    byte[] file2 = File.ReadAllBytes(filePath2); return file1.SequenceEqual(file2); 
}
//調(diào)用bool areFilesEqual = FileEquals("file1.txt", "file2.txt");

16、文件壓縮與解壓縮

在c#中可以使用ZipFile類(lèi)進(jìn)行文件壓縮和解壓縮操作,目前官方只支持zip文件。案例如下:

ZipFile.CreateFromDirectory("source/path""archive.zip");ZipFile.ExtractToDirectory("archive.zip""destination/path");

17、文件路徑規(guī)范化(文件路徑)

使用Path.GetFullPath方法規(guī)范化文件路徑,解析相對(duì)路徑等。在項(xiàng)目中可以獲取完整路徑。

string normalizedPath = Path.GetFullPath("path/to/../file.txt");

18、使用MemoryMappedFile進(jìn)行內(nèi)存映射文件操作

利用MemoryMappedFile進(jìn)行大文件的內(nèi)存映射操作,提高文件讀寫(xiě)性能。

using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile("path/to/file.txt"))
{    
   // 執(zhí)行內(nèi)存映射文件操作
}

19、文件流異步操作

使用FileStream的異步方法進(jìn)行文件流的異步讀寫(xiě)操作。

using (FileStream fs = new FileStream("path/to/file.txt", FileMode.Open, FileAccess.Read))
{
    byte[] buffer = new byte[1024]; int bytesRead = await fs.ReadAsync(buffer, 0, buffer.Length);    // 處理讀取的數(shù)據(jù)
}

20、使用TransactionScope進(jìn)行文件事務(wù)操作

使用TransactionScope進(jìn)行多個(gè)文件操作的事務(wù)管理,確保一組文件操作要么全部成功,要么全部失敗。

using (TransactionScope scope = new TransactionScope())
{
    File.Move("old/path/file.txt""new/path/file.txt");
    // 其他事務(wù)操作
    scope.Complete();
}

結(jié)語(yǔ)

掌握這些C#文件系統(tǒng)I/O知識(shí)點(diǎn)對(duì)于.NET開(kāi)發(fā)者來(lái)說(shuō)是至關(guān)重要的。通過(guò)靈活運(yùn)用這些知識(shí),開(kāi)發(fā)者能夠更加高效地處理文件和目錄,確保應(yīng)用程序的可靠性和性能。在日常開(kāi)發(fā)中,不斷深入學(xué)習(xí)和實(shí)踐這些知識(shí),將有助于提高開(kāi)發(fā)者的文件系統(tǒng)操作技能。


該文章在 2023/12/26 23:34:12 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved