首頁 > 後端開發 > C#.Net教程 > C# FileNotFoundException

C# FileNotFoundException

PHPz
發布: 2024-09-03 15:20:57
原創
1003 人瀏覽過

在 C# 中處理檔案輸入輸出時,可能會出現各種異常,但當我們嘗試存取程式中的檔案並且該檔案不存在或被刪除時,會引發 FileNotFoundException。因此,基本上,當我們在系統中擁有檔案的位址,但當我們執行程式時,找不到我們提到或傳遞的檔案時,就會發生 FileNotFound 異常。找不到此文件的原因可能有多種。該文件可能已從該位置刪除,或者文件名可能已更改並且與我們提到的名稱不符。也有可能當我們傳遞了錯誤的地址,當它命中該地址時,沒有文件,從而發生異常。

文法:

每個方法、類別或異常都有其標準語法。

如果出現 FileNotFound 異常,標準語法如下:

public class FileNotFoundException :System.IO.IOException
登入後複製

FileNotFound 異常是 IOException 的一部分,IOException 繼承自 SystemException,向上到 Exception 和 Object 類別。

FileNotFoundException 在 C# 中如何運作?

  • FileNotFoundException 實作了 HRESULT COR_E_FILENOTFOUND,其中包含 0x80070002 值。
  • 此 FileNotFound 異常通常在處理檔案的輸入輸出作業時發生。
  • 當程式碼找不到檔案時,它會建立 FileNotFoundException() 的新實例及其訊息字串,這是系統設定的錯誤訊息。
  • 在各種此類建構函式中,可以加入字串,可以顯示上下文資訊和錯誤訊息。
  • 此外,另一個建構函式可以提供導致此異常的內部異常的參考。

C# FileNotFoundException 範例

下面給出的是提到的例子:

範例#1

代碼:

using System;
using System.IO;
class Program {
static void Main() {
try {
using (StreamReaderfilereader = new StreamReader("nofile.txt")) {
filereader.ReadToEnd();
}
}
catch (FileNotFoundException ex) {
Console.WriteLine(ex);
}
}
}
登入後複製

說明:

  • 我們只是從系統檔案開始。 System.IO 是這裡的一個重要的導入文件,因為我們將對文件輸入和輸出進行操作。然後我們就有了我們的類別和主要方法。我們已經進入了 try catch 區塊以捕獲異常。然後我們就有了 StreamReader 類,它位於 system.IO 命名空間中。
  • StreamReader 類別用於讀取文字檔案。它易於使用並提供良好的性能。透過 StreamReader,我們有了呼叫 nofile.txt 的對象,據我們所知,該物件不存在。然後我們有 ReadToEnd 方法,如果找到的話,它將讀取檔案直到結束。最後,我們有了 catch 區塊,當然,正如我們所說,它保存了 FileNotFound 異常,當它捕獲它時,它將在下一行的輸出語句中列印。
  • 成功執行上述程式碼後,輸出將出現異常,「無法找到檔案...」。

輸出:

C# FileNotFoundException

範例#2

這裡我們將執行與上面程式碼類似的程式碼,但沒有任何 try catch 區塊,這將是一個簡單的程序,我們無法猜測到底會出現什麼問題。

代碼:

using System.IO;
using System;
class Program {
static void Main() {
using (StreamReaderfilereader = new StreamReader("incorrectfilename.txt")) {
filereader.ReadToEnd();
}
}
}
登入後複製

說明:

  • 在我們的第二個範例中,程式碼幾乎與第一個範例類似,但我們沒有具體實作任何捕獲異常的方法。從系統檔案開始,然後是我們的類別和 main 方法。然後前進到 StreamReader,我們傳遞了檔案名,這是不正確的,在下一行我們嘗試讀取檔案到底。
  • 但是我們沒有嘗試捕獲或識別這裡的異常,這是我們相信該文件存在的場景,因此我們不希望出現任何異常。執行時會列印 Unhandled Exception 並拋出「System.IO.FileNotFoundException: Could not find file」。

輸出:

C# FileNotFoundException

正如您所看到的,與我們先前的範例不同,這是一個未處理的異常,並且輸出符合預期。

如何在 C# 中避免 FileNotFoundException?

就像其他異常一樣,這個 FileNotFound 異常是可以避免的。在我們可以用來避免此異常的方法中,建議使用 File.Exists 方法。當我們不確定傳入參數的檔案在來源連結中是否不可用時,最好使用 File.Exists 方法。建議使用 File.Exists 方法。

範例:

我們將在程式中使用 File.Exists 方法,看看如何進一步使用它。

代碼:

using System.IO;
using System;
class Program {
static void Main() {
bool ifexists = File.Exists("incorrectfilename.txt");
Console.WriteLine("\n "+ifexists);
}
}
登入後複製

說明:

  • 我們這裡的程式碼非常適合我們不確定要使用的檔案是否存在的情況。這是簡單的實現,我們可以在循環中使用這樣的程式碼,它檢查不同或替代文件,並選擇存在的文件進行操作。
  • 我們有 File.Exists 方法,我們在其中傳遞了檔案名稱並檢查檔案是否存在。
  • 現在在下一行中,我們有 print 語句,它將根據檔案是否存在列印一個布林值,True 或 False。我們的檔案不存在,所以它必須傳回 false。

輸出:

C# FileNotFoundException

結論

總而言之,FileNotFound 異常來自物件類別的 IO 系統命名空間。 FileNotFoundException 是在我們傳遞檔案或嘗試對檔案執行輸入或輸出操作但該檔案不存在時發生的。其他原因可能是檔案名稱不正確或來源連結不正確。可以使用 File Exists 方法來避免此異常。

以上是C# FileNotFoundException的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板