【问题标题】:Filestream and windows user permissions文件流和 Windows 用户权限
【发布时间】:2013-01-21 10:36:00
【问题描述】:

我正在通过写入文件流来创建 .jpg 文件:

                using (FileStream fs = new FileStream(FileName, FileMode.CreateNew, FileAccess.Write))
                {
                    fs.Write(image, 0, image.Length);
                }

我遇到的问题是,在某些情况下,文件是使用错误的访问权限创建的,更确切地说,它似乎没有任何所有者。 “无法显示当前所有者。”在高级安全设置下。唯一应该不同的是内容本身。 我究竟做错了什么?使用 FileStream 时的访问权限设置在哪里?

这是完整的代码

       public void SaveImage(string path)
    {
        try
        {
            //Get the files data
            List<byte[]> files = GetFiles();

            if (files.Count == 0)
                throw new Exception("No data");

            //Calculate the path name
            string FileDirectory = Path.GetDirectoryName(path);
            if (FileDirectory.Length > 0)
                FileDirectory += "\\";

            string FileNameBase = Path.GetFileNameWithoutExtension(path);
            string FileExtension = Path.GetExtension(path);
            string FinalFileName = "";

            if (files.Count == 1)
            {
                FinalFileName = FileDirectory + FileNameBase + FileExtension;
                while (File.Exists(FinalFileName))
                {
                    FileNameBase = FileNameBase + DateTime.Now.ToString("yyyyMMddHHmmss");
                    FinalFileName = FileDirectory + FileNameBase + FileExtension;
                }
            }
            else
            {
                FinalFileName = FileDirectory + FileNameBase + "(1)" + FileExtension;
                while (File.Exists(FinalFileName))
                {
                    FileNameBase = FileNameBase + DateTime.Now.ToString("yyyyMMddHHmmss");
                    FinalFileName = FileDirectory + FileNameBase + "(1)" + FileExtension;
                }
            }

            for (int i = 0; i < files.Count; i++)
            {
                byte[] image = files[i];
                if (files.Count > 1)
                    FinalFileName = FileDirectory + FileNameBase + "(" + (i + 1).ToString() + ")" + FileExtension;
                else
                    FinalFileName = FileDirectory + FileNameBase + FileExtension;

                if (image.Length == 0)
                    throw new Exception("No data");

                //Store the image in the specified path
                using (FileStream fs = new FileStream(FinalFileName, FileMode.CreateNew, FileAccess.Write))
                {
                    fs.Write(image, 0, image.Length);
                }
            }
        }
        catch (FaultException<string> ex)
        {
            throw new SdkException(ex.Message, ex.Code, ex.Detail);
        }
        catch (FaultException ex)
        {
            throw new SdkException(ex.Message, ex.Code, "");
        }

    }

【问题讨论】:

  • 看来我找到了问题的原因。我要在其中创建新文件的文件夹的权限。我删除并重新创建了该文件夹,现在它可以工作了。我仍然不明白为什么会出现这种行为以及为什么我没有收到任何异常。
  • 文件有所有者,只是文件的权限不允许你看到所有者是谁。

标签: c# windows file-permissions


【解决方案1】:

也许你在创建文件的时候没有一个好的方法得到一个异常?在这里您可以找到有关文件系统权限的更多信息: http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesystemrights.aspx

【讨论】:

  • 不,没有异常,文件好像创建正确了。
  • 而且访问权限应该是默认的,我看不到任何一行代码明确处理权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
  • 2017-01-19
相关资源
最近更新 更多