gpt4 book ai didi

c++ - 写入 C :\Program Files 中包含的文件夹的文件名

转载 作者:行者123 更新时间:2023-11-30 01:56:36 25 4
gpt4 key购买 nike

我有这个任务:
1. 在当前目录创建文件subMape.dat
2. 将存放在C:\Program Files文件夹
中的所有文件夹名称写入其中3. 屏幕显示数据,subMape.dat中写的

#include <iostream>
#include <windows.h>

using namespace std;

int main() {
WIN32_FIND_DATA findFileData;
DWORD bytesWritten = 0;

HANDLE f;
HANDLE c = CreateFileW(L"subMape.txt", GENERIC_READ | GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

//TCHAR lpBuffer[32];
DWORD nNumberOfBytesToRead = 32;
//DWORD lpNumberOfBytesRead;

DWORD lengthSum = 0;

if (c) {
cout << "CreateFile() succeeded!\n";
if(f = FindFirstFile(L"C:\\Program Files\\*", &findFileData)){
if(f != INVALID_HANDLE_VALUE) {

while (FindNextFile(f, &findFileData)){
lengthSum += bytesWritten;
WriteFile(c, findFileData.cFileName, (DWORD)wcslen(findFileData.cFileName), &bytesWritten, NULL);
}
}
FindClose(f);
}

else {
cout << "FindFirstFile() failed :(\n";
}

}

else {
cout << "CreateFile() failed :(\n";
}
cout << lengthSum << endl;
//SetFilePointer(c, lengthSum, NULL, FILE_BEGIN);
//ReadFile(c, lpBuffer, lengthSum, &lpNumberOfBytesRead, NULL);
//wprintf(lpBuffer);

CloseHandle(c);

return 0;
}

我正在使用 UNICODE,当它写入 findFileData.cFileName 时 - 它写入字符串,其中字符用空格分隔。例如:文件夹名称“New Folder”(strlen = 10) 将作为“N e w To”(strlen = 10) 写入文件。做什么?

最佳答案

您的文本文件查看器或编辑器不够智能,无法判断您编写的是 utf-16 编码的文本文件。大多数文本编辑器需要帮助,请写 the BOM到文件:

    cout << "CreateFile() succeeded!\n";
wchar_t bom = L'\xfeff';
WriteFile(c, &bom, sizeof(bom), &bytesWritten, NULL);

关于c++ - 写入 C :\Program Files 中包含的文件夹的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19604992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com