我有一个创建目录并将文件复制到其中的应用程序。这通常很好。但是,如果窗口正确关闭并且电源丢失,则文件将无法始终可用或完整。
我的操作系统是Windows Embedded POSReady7(版本6.1 Build 7601:Service Pack 1),并且在硬盘上禁用了“写入缓存”选项。我有一个C ++应用程序。我也使用_flushall,但它没有帮助。
我已经编写了一个测试应用程序,我可以看到问题。我启动应用程序,在输出完成后等待十秒钟然后拔掉电源。重启后文件不可用。
这是我的代码:
#include "stdafx.h"
#include <iostream>
#include <direct.h>
#include <string>
#include <Windows.h>
#include <atlstr.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string csPathName("D:\\temp\\FileCopyTest\\");
int mkRetValue = _mkdir( csPathName.c_str() );
cout << "Create directory " << csPathName.c_str() << " with return value " << mkRetValue << endl;
BOOL copyRetValue = CopyFileEx( _T("D:\\temp\\test.txt"), _T("D:\\temp\\FileCopyTest\\test.txt"), nullptr, nullptr, FALSE, COPY_FILE_NO_BUFFERING );
cout << "Copy file, return value " << copyRetValue << endl;
int flushRetValue = _flushall();
cout << "flush files: " << flushRetValue << endl;
char c;
cin >> c;
return 0;
}
答案 0 :(得分:0)
您是否尝试过将副本放入范围内?
{
CopyFileEx( _T("D:\\temp\\test.txt"), _T("D:\\temp\\FileCopyTest\\test.txt"), nullptr, nullptr, FALSE, COPY_FILE_NO_BUFFERING );
}