小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

C# System.IO.FileStream 讀取被其他程序打開的文件提示“文件正由另一進(jìn)程使用,因此該進(jìn)程無法訪問該文件?!?/span>

 redersun 2014-05-14

[c-sharp] view plaincopy
  1. #region 將二進(jìn)制轉(zhuǎn)化為文件  
  2.         public static string ConvertByteToFile(object objData, string filePathName)  
  3.         {  
  4.             //string fileName = "";              
  5.             //fileName = new PublicConst().PathTempFile + fileName;  
  6.             string folder = System.IO.Path.GetDirectoryName(filePathName);  
  7.             if (!System.IO.Directory.Exists(folder))  
  8.             {  
  9.                 System.IO.Directory.CreateDirectory(folder);  
  10.             }  
  11.             if (System.IO.File.Exists(filePathName))  
  12.             {  
  13.                 try  
  14.                 {  
  15.                     System.IO.File.Delete(filePathName);  
  16.                 }  
  17.                 catch  
  18.                 {  
  19.                      //("FileInUse");  
  20.                     return "";  
  21.                 }  
  22.             }  
  23.             System.IO.FileStream fs = new System.IO.FileStream(filePathName, System.IO.FileMode.Create, System.IO.FileAccess.Write);  
  24.             System.IO.BinaryWriter w = new System.IO.BinaryWriter(fs);  
  25.   
  26.             try  
  27.             {  
  28.                 w.Write(objData as byte[]);  
  29.             }  
  30.             catch (Exception)  
  31.             {  
  32.             }  
  33.             finally  
  34.             {  
  35.                 w.Close();  
  36.                 fs.Close();  
  37.             }  
  38.             return filePathName;  
  39.         }  
  40.         #endregion   
將文件轉(zhuǎn)化為二進(jìn)制代碼時(shí),出現(xiàn)提示:

文件正由另一進(jìn)程使用,因此該進(jìn)程無法訪問該文件

原來是構(gòu)造System.IO.FileStream時(shí),使用的方法有問題

一開始是直接使用

System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open)

這個(gè)方法打開文件的時(shí)候是以只讀共享的方式打開的,但若此文件已被一個(gè)擁有寫權(quán)限的進(jìn)程打開的話,就無法讀取了,

因此需要使用

System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);

設(shè)置文件共享方式為讀寫,F(xiàn)ileShare.ReadWrite,這樣的話,就可以打開了

 

 

附,把二進(jìn)制轉(zhuǎn)化為文件的函數(shù)

這兩個(gè)函數(shù)經(jīng)常用來存取數(shù)據(jù)庫哦的BLOB字段。

[c-sharp] view plaincopy
  1. #region 將文件轉(zhuǎn)化為二進(jìn)制  
  2.        public static byte[] ConvertFileToByte(string fileName)  
  3.        {  
  4.            if (!System.IO.File.Exists(fileName))  
  5.            {  
  6.                return null;  
  7.            }  
  8.            System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);  
  9.            byte[] nowByte = new byte[(int)fs.Length];  
  10.            try  
  11.            {  
  12.                fs.Read(nowByte, 0, (int)fs.Length);  
  13.                return nowByte;  
  14.            }  
  15.            catch (Exception)  
  16.            {  
  17.                return null;  
  18.            }  
  19.            finally  
  20.            {  
  21.                fs.Close();  
  22.            }  
  23.        }  
  24.        #endregion  

 

 

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多