如题C#怎么可以获取文件的状态。
1.文件有可能已经被打开。
2.文件有可能在编辑当中。目的是实现,对这些正在处理当中的文件,不作任何动作。

解决方案 »

  1.   

                try
                {
                    string filename ;
                    System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileAccess.ReadWrite);
                    fs.Close();
                    fs.Dispose();            }
                catch (Exception ex)
                {
                  //如果发生异常就表示
                    //1.文件有可能已经被打开。 
                    //2.文件有可能在编辑当中。 
                    MessageBox(ex.ToString());
                }
      

  2.   

    其实你的目的就是要判断一下文件是否被占用:这个是文件操作的API类
    using System.Runtime.InteropServices;
        /// <summary>
        /// 文件操作API
        /// </summary>
        public class WinApi
        {
            [DllImport("kernel32.dll")]
            public static extern IntPtr _lopen(string lpPathName, int iReadWrite);        [DllImport("kernel32.dll")]
            public static extern bool CloseHandle(IntPtr hObject);
        }下面是调用类
            #region 判断文件是否占用
            /// <summary>
            /// 判断文件是否占用
            /// </summary>
            /// <param name="file"></param>
            /// <returns>true被占用/false未占用</returns>
            public bool isOccupy(string file)
            {
                bool flag = false;
                IntPtr vHandle = WinApi._lopen(file, OF_READWRITE | OF_SHARE_DENY_NONE);
                if (vHandle == HFILE_ERROR)
                {
                    flag = true;
                }
                else
                {
                    flag = false;
                }
                WinApi.CloseHandle(vHandle);
                return flag;   
            }
            #endregion