private string SafeReadContents(string file)
{
try
{
return fileSystem.File.ReadAllText(file);
}
catch (IOException)
{
var fileInfo = fileSystem.FileInfo.FromFileName(file);
var tempFile = Path.Combine(Path.GetTempPath(), fileInfo.Name);
try
{
fileInfo.CopyTo(tempFile, true);
return fileSystem.File.ReadAllText(tempFile);
}
finally
{
if (fileSystem.File.Exists(tempFile))
fileSystem.File.Delete(tempFile);
}
}
}