C++ Builder 參考手冊 ? System::Sysutils ? FileCreate
創(chuàng)建一個新文件
頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數(shù)原型:
NativeUInt __fastcall FileCreate(const System::UnicodeString FileName);
NativeUInt __fastcall FileCreate(const System::UnicodeString FileName, int Rights);
NativeUInt __fastcall FileCreate(const System::UnicodeString FileName, unsigned Mode, int Rights);
參數(shù):
- FileName:路徑和文件名雏节;
- Rights:權限怜俐,
? Windows 不使用這個參數(shù)婚被,
? Android 和 MAC / IOS 使用這個參數(shù)梗劫,如果沒有這個參數(shù),使用全局變量 System::FileAccessRights劲腿,這個全局變量的默認值是 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH议慰; - Mode:文件讀寫和共享方式龄糊,如果沒有這個參數(shù),認為是 fmOpenRead | fmShareExclusive由驹,這個參數(shù)值由讀寫和共享兩部分按位或得到芍锚,其中:
? 讀寫方式:fmOpenRead、fmOpenWrite蔓榄、fmOpenReadWrite并炮;
? 共享方式:fmShareCompat、fmShareExclusive甥郑、fmShareDenyWrite逃魄、fmShareDenyRead、fmShareDenyNone澜搅; - 如果要使用 Mode 參數(shù)伍俘,就必須使用三個參數(shù)的函數(shù),在 Windows 里面第三個參數(shù)可以用 0 ( Windows 不使用第三個參數(shù)勉躺, 也沒有 System::FileAccessRights 這個全局變量)
- 如果要兩個程序代碼同時訪問一個文件 (無論是在同一個進程還是不同的進程)癌瘾,打開文件的讀寫方式和共享方式不能矛盾,否則后打開的文件不能成功饵溅,例如先以 fmOpenReadWrite|fmShareDenyWrite 方式打開妨退,并且在關閉之前,另一段代碼同時再以 fmOpenRead|fmShareDenyWrite 方式打開會失敗概说,雖然前面代碼允許這段代碼讀文件碧注,但是這段代碼不允許其他代碼寫,這與先打開的文件矛盾了糖赔,所以會失敗萍丐。
返回值:
- 新創(chuàng)建文件的句柄,如果文件創(chuàng)建成功放典;
- INVALID_HANDLE_VALUE逝变,如果文件創(chuàng)建失敾稹;
讀寫方式 | 說明 |
---|---|
fmOpenRead | 讀文件 |
fmOpenWrite | 寫文件 |
fmOpenReadWrite | 讀寫文件 |
共享方式 | 說明 |
---|---|
fmShareCompat | FCB 兼容方式 |
fmShareExclusive | 獨占方式壳影,在關閉之前不能同時再打開讀或寫這個文件 |
fmShareDenyWrite | 拒絕寫拱层,在關閉之前不能同時再打開寫這個文件 |
fmShareDenyRead | 拒絕讀,在關閉之前不能同時再打開讀這個文件 |
fmShareDenyNone | 共享方式宴咧,在關閉之前可以同時再打開這個文件進行讀寫 |
例:創(chuàng)建一個 UTF-8 文本文件根灯,寫入一行文字
void __fastcall TForm1::Button1Click(TObject *Sender)
{
NativeUInt hFile = FileCreate(L"D:\\HsuanluFileTest.txt", fmOpenReadWrite|fmShareDenyWrite, 0);
if(hFile == (NativeUInt)INVALID_HANDLE_VALUE)
{
ShowMessage(L"創(chuàng)建文件失敗");
return;
}
UTF8String s = L"測試 FileCreate / FileWrite / FileClose - 玄坴";
FileWrite(hFile, "\xEF\xBB\xBF", 3); // UTF-8 BOM
FileWrite(hFile, s.c_str(), s.Length());
FileClose(hFile);
}
相關:
- System::Sysutils::FileOpen
- System::Sysutils::FileCreate
- System::Sysutils::FileRead
- System::Sysutils::FileWrite
- System::Sysutils::FileSeek
- System::Sysutils::FileClose
- System::Sysutils
C++ Builder 參考手冊 ? System::Sysutils ? FileCreate