に(、パス/ファイルの存在をファイルアクセス権など)のファイルシステムへのアクセスを管理し、例外処理を管理するためのtry catchブロックを使用しますあなたは、ファイルへのアクセス権を持っている場合、ファイルが存在する場合は、後に、確認し、ストリームの作成の間のtry catchブロックを使用し、見ることができます:だから
public bool HasDirectoryAccess(FileSystemRights fileSystemRights, string directoryPath)
{
DirectorySecurity directorySecurity = Directory.GetAccessControl(directoryPath);
foreach (FileSystemAccessRule rule in directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
if ((rule.FileSystemRights & fileSystemRights) != 0)
{
return true;
}
}
return false;
}
:
if (this.HasDirectoryAccess(FileSystemRights.Read, path)
{
if (File.Exists(path))
{
try
{
using (Streamwriter ....)
{
// write code
}
}
catch (Exception ex)
{
// throw error if exceptional else report to user or treat it
}
}
else
{
// throw error if exceptional else report to user
}
}
try catchですべてを確認し、try catch内でストリームを作成できます。
ユーザが 'if'と' using'の間でファイルを削除するとどうなりますか? – SLaks
oblig:http://blogs.msdn.com/b/ericlippert/archive/2008/09/10/vexing-exceptions.aspx – cadrell0