1
在編寫一些處理日誌和文件的代碼時,我發現了windows文件io中的一些令人困惑的行爲。有誰知道爲什麼這個測試會以「無法讀取文件」的信息失敗?爲什麼FileShare無法按預期工作?
[TestMethod]
public void SouldAllowReads()
{
using (var file = File.Open(_path, FileMode.Create, FileAccess.Write, FileShare.Read))
{
using (var file2 = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
//works ok, doesn't throw
}
try
{
using (var file3 = File.Open(_path, FileMode.Open, FileAccess.Read, FileShare.Read))
{
//fails
}
}
catch (IOException)
{
Assert.Fail("cannot read file");
}
}
}
PS。 _path = Path.GetTempFileName();
編輯:
我還是選elevener回答是正確的,但有一件事困擾我的這個設計。 .NET方法(如File.ReadAllText(_path))會拋出異常,這種情況不應該發生。
例如,這剪斷我的測試也將失敗的斷言:
try
{
string text = File.ReadAllText(_path);
}
catch (IOException)
{
Assert.Fail("cannot read file");
}
最後一個片段在什麼情況下會給你IOexcpetion? –
記錄了ReadAllText引發異常的事實。如果手術失敗,您希望/預期會發生什麼? –