|
我写了一段代码,如下:
HANDLE hFile = CreateFile(L"D:\\123.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("open error\n");
return;
}
DWORD filesize = GetFileSize(hFile, NULL);
if (filesize == INVALID_FILE_SIZE)
{
printf("filesize error\n");
return;
}
char *buff = (char *)malloc(filesize+1);
memset(buff, 0, filesize + 1);
DWORD dwRead = 0;
if (!ReadFile(hFile, buff, filesize, &dwRead, NULL))
{
printf("read error\n");
return;
}
int ilen = strlen(buff);
return;
我的文件123.txt中内容是12345,对于txt文件,这段代码似乎没有问题,因为filesize的值是5,读文件后dwRead 也是5,当然ilen 也是5.
现在我有一个问题,如果我的文件是个图片文件,比如:124.jpg,问题是filesize的值是890207,读文件后dwRead 也是890207,但是ilen 是10,不知道是什么原因?因为我想在网络中传图片文件,但是这个buf为什么只有10,而没有读890207个字节到缓冲区。
如果我换成个125.mp4文件,filesize的值是1322091,读文件后dwRead 也是1322091,但是ilen 是0,我不知道为什么视频和图片文件的数据读不到缓冲区,是不是ReadFile函数不支持读图片和视频?
还有我在帖子https://www.cctry.com/forum.php? ... p;page=1#pid1258319我看就是用ReadFile函数读取文件内容的啊。小弟在此请各位帮我看看问题出在哪?小弟非常感谢 |
上一篇: 注册表管理下一篇: 谁有windowsAPI函数 chm版本
|