程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#如何判斷文件處於打開狀態

C#如何判斷文件處於打開狀態

編輯:C#入門知識

對於應用程序,有時候可能需要判斷某個文件是否已經被打開,也就是指是否被某個流連接著。這在對文件的讀寫比較頻繁的程序中尤為重要,因為一個文件同一時刻只能有一個流連接的。下面的代碼也許能有所幫助。   [csharp]   public class FileStatus      {          [DllImport("kernel32.dll")]          private static extern IntPtr _lopen(string lpPathName, int iReadWrite);             [DllImport("kernel32.dll")]          private static extern bool CloseHandle(IntPtr hObject);             private const int OF_READWRITE = 2;             private const int OF_SHARE_DENY_NONE = 0x40;             private static readonly IntPtr HFILE_ERROR = new IntPtr(-1);             public static int FileIsOpen(string fileFullName)          {              if (!File.Exists(fileFullName))              {                  return -1;              }                 IntPtr handle = _lopen(fileFullName, OF_READWRITE | OF_SHARE_DENY_NONE);                 if (handle == HFILE_ERROR)              {                  return 1;              }                 CloseHandle(handle);                 return 0;          }      }      public class FileStatus     {         [DllImport("kernel32.dll")]         private static extern IntPtr _lopen(string lpPathName, int iReadWrite);           [DllImport("kernel32.dll")]         private static extern bool CloseHandle(IntPtr hObject);           private const int OF_READWRITE = 2;           private const int OF_SHARE_DENY_NONE = 0x40;           private static readonly IntPtr HFILE_ERROR = new IntPtr(-1);           public static int FileIsOpen(string fileFullName)         {             if (!File.Exists(fileFullName))             {                 return -1;             }               IntPtr handle = _lopen(fileFullName, OF_READWRITE | OF_SHARE_DENY_NONE);               if (handle == HFILE_ERROR)             {                 return 1;             }               CloseHandle(handle);               return 0;         }     }測試:   [csharp]   class Program   {       static void Main(string[] args)       {           string testFilePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"testOpen.txt";              FileStream fs = new FileStream(testFilePath, FileMode.OpenOrCreate, FileAccess.Read);              BinaryReader br = new BinaryReader(fs);              br.Read();              Console.WriteLine("文件被打開");              int result =FileStatus.FileIsOpen(testFilePath);              Console.WriteLine(result);              br.Close();              Console.WriteLine("文件被關閉");              result = FileStatus.FileIsOpen(testFilePath);              Console.WriteLine(result);              Console.ReadLine();       }   }         class Program     {         static void Main(string[] args)         {             string testFilePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"testOpen.txt";               FileStream fs = new FileStream(testFilePath, FileMode.OpenOrCreate, FileAccess.Read);               BinaryReader br = new BinaryReader(fs);               br.Read();               Console.WriteLine("文件被打開");               int result =FileStatus.FileIsOpen(testFilePath);               Console.WriteLine(result);               br.Close();               Console.WriteLine("文件被關閉");               result = FileStatus.FileIsOpen(testFilePath);               Console.WriteLine(result);               Console.ReadLine();         }     }結果:   \

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved