2016-07-25 50 views
0

我遇到了一個我無法捕捉的錯誤,它不應該在那裏。奇數文件不存在錯誤

if (System.IO.File.Exists (PathToMyFile)) 
{ 
    try{ 
     FileStream fs = new FileStream(PathToMyFile, FileMode.Open, FileAccess.Read); 
     BinaryReader br = new BinaryReader(fs); 
     Byte[] bytes = br.ReadBytes((Int32)fs.Length); 
     br.Close(); 
     fs.Close(); 
     myFile =Convert.ToBase64String (bytes) ; 
     } 
    catch{} 
    } 

由於某些原因,有時候我會得到一個異常錯誤,即該文件在它絕對存在時不存在。第一個「If語句」甚至在試圖打開文件時說它還在那裏,我有時候會遇到一個巨大的應用程序崩潰,導致catch沒有「捕獲」。

就像我說的,這是一個隨機錯誤,大部分時間代碼是完美的,但奇怪的場合似乎會拋出一個應用程序停止工作的錯誤。

+0

你能告訴我們什麼是錯誤?使用catch(Exception e) Console.WriteLine(「{0} Exception caught。」,e); }'並讀取錯誤 –

+0

似乎無法複製它現在但錯誤是一個文件不存在,認爲它的Java語言錯誤,如果沒有錯誤 – Migz

回答

0

的第一件事是確保你關閉文件\流

所以,你可以調用fs.Close()或使用

if (File.Exists(pathToMyFile)) 
{ 
    try 
    { 
     using (var fs = new FileStream(pathToMyFile, FileMode.Open, FileAccess.Read)) 
     { 
     BinaryReader br = new BinaryReader(fs); 
     Byte[] bytes = br.ReadBytes((Int32) fs.Length); 
     br.Close(); 
     fs.Close(); 
     myFile = Convert.ToBase64String(bytes); 
     } 
    } 
    catch 
    { 
     // Log exception 
    } 
} 

第二,如果你需要閱讀該文件作爲字符串,只需使用

if (File.Exists(pathToMyFile)) 
{ 
    try 
    { 
     myFile = File.ReadAllText(pathToMyFile); 
    } 
    catch 
    { 
     // Log exception    
    } 
} 
相關問題