2014-02-25 104 views
0

在Windows XP機器上使用C++。檢查文件是否在C++中打開並寫保護

  1. 如何檢查文件是否已經打開?
  2. 如何區分已打開的文件和寫保護的文件?

感謝您的幫助!

+0

什麼是你的目標是什麼?爲了讓用戶知道他們無法打開文件的具體原因? –

回答

0

易後難先,然後是更復雜的:-)

2)使用Win32 API的GetFileAttributes和檢查FILE_ATTRIBUTE_READONLY

1)如果該文件一直沒有一個選項,防止您的訪問打開時,可以「知道

如果它是鎖着的,你必須嘗試打開它,你會得到與價值INVALID_HANDLE_VALUE文件句柄,然後您可以檢查,例如,如果GetLastError() == ERROR_SHARING_VIOLATION

+0

謝謝2)工作正常, 1)但我不知道如何打開文件。我試過'FILE * fd = fopen(lockFileName.c_str(),「a +」);'但我得到了以下編譯器警告:'警告C4996:'fopen':這個函數或變量可能是不安全的。考慮使用fopen_s代替。要禁用棄用,請使用_CRT_SECURE_NO_WARNINGS。查看聯機幫助以瞭解詳情# – user3352154

+0

尋找Windows API函數CreateFile ...爲什麼使用fopen我以爲你在做Windows API? – FredP