2013-02-06 64 views
1

林通過寫入一個文件流創建.jpg文件:文件流和Windows用戶權限

   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, ""); 
     } 

    } 
+0

似乎我發現問題的原因。我想要創建新文件的文件夾的權限。我刪除並重新創建該文件夾,現在它工作。我仍然不明白的是爲什麼這種行爲以及爲什麼我沒有收到任何異常。 –

+0

該文件有一個所有者,只是該文件的權限不允許您查看所有者是誰。 –

回答