- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
以前从来没有过。如果我使用 fopen() 等函数从磁盘读取文件,fopen 会成功,但 FILE * 内容看起来有点 NULL-ish。然后我尝试 fseek(SEEK_END) 并报告文件大小为 0 字节。
如果我对 CreateFile()、GetFileSize()、ReadFile() 执行相同的操作,它就会起作用。相同的功能,相同的路径...
VS2013社区版,Win7 x64,64位编译。我测试的文件很小(从不超过 400 字节)。它们位于 E: 盘 (E:\temp),这是一个本地分区。
我有什么想法需要焊接我的电脑来解决这个问题吗? :)
static void LoadFile(const std::string &path, std::string& target)
{
#if 1
HANDLE hFile = ::CreateFileA(path.c_str(), FILE_READ_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
finally finallyClose([&hFile](){ ::CloseHandle(hFile); });
if (INVALID_HANDLE_VALUE != hFile)
{
DWORD fileSize = ::GetFileSize(hFile, NULL);
target.resize(fileSize);
DWORD bytesRead = 0UL;
BOOL success = ::ReadFile(hFile, &target[0], fileSize, &bytesRead, NULL);
}
else
{
std::cout << "Could not load file: " << path << std::endl;
}
#else
FILE * inFile = NULL;
errno_t err = fopen_s(&inFile, path.c_str(), "rb");
if (NULL != inFile)
{
finally finallyClose([&inFile](){ fclose(inFile); });
int fileSize = fseek(inFile, 0, SEEK_END);
fseek(inFile, 0, SEEK_SET);
target.resize(fileSize);
fread(&target[0], sizeof(char), fileSize, inFile);
}
else
{
std::cout << "Could not load file: " << path << std::endl;
}
#endif
}
最佳答案
fseek
函数在成功时返回 0。它不返回文件指针移动的字节数。
http://en.cppreference.com/w/c/io/fseek
您需要调用 ftell
来取回文件大小。
http://en.cppreference.com/w/c/io/ftell
fseek(inFile, 0, SEEK_END);
int filesize = ftell(inFile);
target.resize(filesize);
关于c++ - Win32 文件 IO 工作但 fopen 等。阿尔。失败。这里发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28251576/
Consider the problem of examining a string x = x1x2 ...xn from an alphabet of k symbols, and a multi
我见过a few questions和 answers在SO上暗示MD5不如SHA之类的安全。 我的问题是,在我的情况下,这值得担心吗? 这是我如何使用它的示例: 在客户端,我通过附加当前时间和密码然
以前从来没有过。如果我使用 fopen() 等函数从磁盘读取文件,fopen 会成功,但 FILE * 内容看起来有点 NULL-ish。然后我尝试 fseek(SEEK_END) 并报告文件大小为
我是一名优秀的程序员,十分优秀!