CreatFile创建文件无效句柄问题,可能是这个原因
参考资料:
http://www.cnblogs.com/fuyanwen/p/3200536.html
http://www.cnblogs.com/wendao/archive/2012/07/27/2612597.html
QString 和 TCHAR 的相互转换
#include <iostream>
#include <Windows.h>
#include <QtCore/QtCore>
#ifdef UNICODE
#define FILE_NAME "数据.txt"
#else
#define FILE_NAME "data.txt"
#endif
int main()
{
QString szqFileName = QString::fromLocal8Bit(FILE_NAME);
qint64 nLen = szqFileName.length();
//
// QString to TCHAR*
//
LPCTSTR szFileName = NULL;
#ifdef UNICODE
szFileName = (wchar_t*)szqFileName.utf16();
#else
QByteArray byteArray = szqFileName.toLocal8Bit();
szFileName = byteArray.constData();
#endif // UNICODE
//
// Create file
//
HANDLE hFile = ::CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
std::cout << "Cannot create file." << std::endl;
else
std::cout << "File created." << std::endl;
::CloseHandle(hFile);
//
// TCHAR* to QString
//
szFileName = TEXT(FILE_NAME);
#ifdef UNICODE
szqFileName = QString::fromUtf16((ushort*)szFileName);
#else
szqFileName = QString::fromLocal8Bit(szFileName);
#endif
QFile file(szqFileName);
if (!file.remove())
std::cout << "Cannot remove file." << std::endl;
else
std::cout << "File removed." << std::endl;
return 0;
}