74

내 .NET 2.0 응용 프로그램에서는 디렉터리에 파일을 만들고 쓸 수있는 충분한 권한이 있는지 확인해야합니다. 이 목적을 위해 파일을 만들고 단일 바이트를 쓰고 나중에 사용 권한이 있는지 테스트하기 위해 자체를 삭제하려고 시도하는 다음 함수가 있습니다.

나는 최선의 방법을 확인하는 것은 실제로 시도하고 예외를 잡는 것이었다. 나는 예외적 인 캐치 (catch)에 대해 특히 행복하지는 않다. 그렇기 때문에 이보다 더 좋은 방법이 있을까?

private const string TEMP_FILE = "\\tempFile.tmp";

/// <summary>
/// Checks the ability to create and write to a file in the supplied directory.
/// </summary>
/// <param name="directory">String representing the directory path to check.</param>
/// <returns>True if successful; otherwise false.</returns>
private static bool CheckDirectoryAccess(string directory)
{
    bool success = false;
    string fullPath = directory + TEMP_FILE;

    if (Directory.Exists(directory))
    {
        try
        {
            using (FileStream fs = new FileStream(fullPath, FileMode.CreateNew, 
                                                            FileAccess.Write))
            {
                fs.WriteByte(0xff);
            }

            if (File.Exists(fullPath))
            {
                File.Delete(fullPath);
                success = true;
            }
        }
        catch (Exception)
        {
            success = false;
        }
    }


  • 코드를 보내 주셔서 감사합니다.하지만 사용자가 글을 쓸 수는 있지만 삭제할 수 없으면 쓰기 권한이 누락되었다는 잘못된 인상을받을 수 있습니다. FileMode.Create를 사용하고 파일 삭제를 제거하기 위해 이것을 바꿀 것입니다. 분명히이 코드는 더 이상 필요하지 않지만 향후 독자를 위해 작성했습니다. - n00b
  • string fullPath = directory + TEMP_FILE;fullPath를 얻기 위해 문자열을 연결하는 대신 Path.Combine 메서드를 사용하십시오.Path.Combine(directory, TEMP_FILE) - nomail
  • 누군가가 펀치를 치고 다음 날 펀치를 당하면 어떨까요? 이틀 후에 펀치를 치고 펀치를하면? 사람들이 그런 일을하지 않을 것이라고 확신하지만 행동을 정의해야합니다. - Scott Hannen

연결된 질문


관련된 질문

최근 질문