1

ファイルストリームに書き込むことで.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, "");
        }

    }
4

1 に答える 1

0

おそらく、ファイルが適切な方法で作成されていない場合に例外が発生しますか?ここで、ファイルシステムの権利に関する詳細情報を見つけることができます:http: //msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesystemrights.aspx

于 2013-02-06T10:34:47.373 に答える