2016-07-25 3 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» даже говорит, что он еще есть, пытаясь открыть файл, я иногда получаю массивную атаку приложения, которая не улавливается.

Как я уже сказал, это случайная ошибка, большую часть времени код совершенен, но странный случай, похоже, вызывает ошибку, которую приложение перестает работать.

+0

Не могли бы вы сообщить нам, что представляет собой ошибка? использовать 'catch (Exception e) { Console.WriteLine (" {0} Исключение пойман. ", e); } 'и прочитать ошибку –

+0

, похоже, не реплицирует ее прямо сейчас, но ошибка в файле не существует, подумайте о ее ошибке Java lang, если не ошибаетесь – 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    
    } 
} 
Смежные вопросы