可行1:当E:\\a.txt 已经存在,且程序字符=Unicode的时候,下面代码可以正常
#include <iostream>
#include <windows.h>
int main()
{
HANDLE hFILE = (HANDLE)CreateFile(L"E:\\a.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
if (hFILE == INVALID_HANDLE_VALUE)
{
printf("CreateFile error\n");
return 0;
}
if (SetFilePointer(hFILE, 0, NULL, FILE_END) == -1)
{
printf("SetFilePointer error\n");
return 0;
}
std::cout << "Hello World!\n";
}
**********************************
可行2:当E:\\a.txt 不存在,且程序字符=Unicode的时候,下面代码可以正常
// Test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include <iostream>
#include <windows.h>
int main()
{
HANDLE hFILE = (HANDLE)CreateFile(L"E:\\a.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NULL, NULL);
if (hFILE == INVALID_HANDLE_VALUE)
{
printf("CreateFile error\n");
return 0;
}
if (SetFilePointer(hFILE, 0, NULL, FILE_END) == -1)
{
printf("SetFilePointer error\n");
return 0;
}
std::cout << "Hello World!\n";
}
*****************************************************************************************
可行3:不论E:\\a.txt 是否存在,都可以覆盖!!!!!!!!
#include <iostream>
#include <windows.h>
int main()
{
HANDLE hFILE = CreateFile(L"E:\\a.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NULL, NULL);
if (hFILE == INVALID_HANDLE_VALUE)
{
printf("CreateFile error\n");
return 0;
}
if (SetFilePointer(hFILE, 0, NULL, FILE_END) == -1)
{
printf("SetFilePointer error\n");
return 0;
}
std::cout << "Hello World!\n";
}
*****************************************************************************************
可行4:相对地址也可以啊!!!!!!!!
#include <iostream>
#include <windows.h>
int main()
{
HANDLE hFILE = CreateFile(L"\\a.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NULL, NULL);
if (hFILE == INVALID_HANDLE_VALUE)
{
printf("CreateFile error\n");
return 0;
}
if (SetFilePointer(hFILE, 0, NULL, FILE_END) == -1)
{
printf("SetFilePointer error\n");
return 0;
}
std::cout << "Hello World!\n";
}
***
可行5:如果是文件路径是变量:下述代码可行。(注意是:CreateFileA)
字符集=Unicode 和未设定 都可以。
必须的说明,当字符集=未设定。那么createfile 也可以!!
//第一步: 产生了一个文件名字和他的句柄
SYSTEMTIME gsz_system_time;
GetLocalTime(&gsz_system_time);
char waveFileName[_MAX_PATH] = { 0 };
sprintf_s(waveFileName, ".\\WAS_%04d-%02d-%02d_%02d_%02d_%02d_%02d.wav", gsz_system_time.wYear, gsz_system_time.wMonth, gsz_system_time.wDay, gsz_system_time.wHour, gsz_system_time.wMinute, gsz_system_time.wSecond, gsz_system_time.wMilliseconds);
wave_file_Handle = CreateFileA(waveFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, NULL, NULL);
//INVALID_HANDLE_VALUE表示无效的句柄值
if (wave_file_Handle == INVALID_HANDLE_VALUE)
{
printf("Unable to open output WAV file %s: %d\n", waveFileName, GetLastError());
return false;
}
*************