用C语言编写程序自动检查路径C:\CSV里存在CSV ANSI格式的文件就自动转换为unicode格式并另存到路径E:\import后删除源文件
时间: 2024-02-26 21:57:42 浏览: 97
好的,我明白了。你可以尝试以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, ""); // 设置本地化信息,用于转换编码
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char path[] = "C:\\CSV\\*.csv"; // 搜索路径
hFind = FindFirstFile(path, &FindFileData); // 查找第一个匹配的文件
if (hFind == INVALID_HANDLE_VALUE) {
printf("No file found.\n");
return 0;
}
do {
if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { // 判断是否为文件
char src_path[MAX_PATH];
char dest_path[MAX_PATH];
sprintf(src_path, "C:\\CSV\\%s", FindFileData.cFileName); // 源文件路径
sprintf(dest_path, "E:\\import\\%s", FindFileData.cFileName); // 目标文件路径
FILE* fp_src = fopen(src_path, "rb"); // 以二进制形式打开源文件
if (!fp_src) {
printf("Open source file failed.\n");
continue;
}
fseek(fp_src, 0, SEEK_END);
int file_size = ftell(fp_src); // 获取源文件大小
fseek(fp_src, 0, SEEK_SET);
char* file_content = (char*)malloc(file_size + 1);
fread(file_content, 1, file_size, fp_src); // 读取源文件内容
file_content[file_size] = '\0';
fclose(fp_src);
FILE* fp_dest = _wfopen(dest_path, L"w+, ccs=UTF-8"); // 以 UTF-8 编码形式创建目标文件
if (!fp_dest) {
printf("Create destination file failed.\n");
free(file_content);
continue;
}
fprintf(fp_dest, "%s", file_content); // 将源文件内容写入目标文件
fclose(fp_dest);
free(file_content);
remove(src_path); // 删除源文件
printf("Convert file %s succeed.\n", FindFileData.cFileName);
}
} while (FindNextFile(hFind, &FindFileData)); // 查找下一个匹配的文件
FindClose(hFind); // 关闭句柄
return 0;
}
```
这段代码会在路径 `C:\CSV` 中查找所有 `.csv` 文件,将 ANSI 编码的文件转换为 UTF-8 编码并保存到路径 `E:\import`,然后删除源文件。如果在搜索路径中没有找到任何匹配的文件,则会输出 `No file found.`。如果无法打开源文件或者无法创建目标文件,则会输出相应的错误信息。
阅读全文