我对从long到int的演员安全性有疑问。我担心我写的方法可能会失败。你能否看看下面的代码,告诉我是否可以编写一些能够避免可能失败的东西?将文件流长度转换为int
预先感谢您。
public static string ReadDecrypted(string fileFullPath)
{
string result = string.Empty;
using (FileStream fs = new FileStream(fileFullPath, FileMode.Open, FileAccess.Read))
{
int fsLength = (int)fs.Length;
byte[] decrypted;
byte[] read = new byte[fsLength];
if (fs.CanRead)
{
fs.Read(read, 0, fsLength);
decrypted = ProtectedData.Unprotect(read, CreateEntropy(), DataProtectionScope.CurrentUser);
result = Utils.AppDefaultEncoding.GetString(decrypted, 0, decrypted.Length);
}
}
return result;
}
你为什么铸造为int? – Yahia
为什么不直接声明fsLength并避免演员阵容? – Tod
我不是C#的专家,但假设'fs.Length'等于2到31的幂(1 << 31)。您的演员阵容会导致“fsLength”的负数? –