C++文件写入问题求教
我想用writefile函数把从一个文件读到的数据写入另一个文件去,但测试下来失败,自己没看出什么问题,求教大神们~
以下是我的代码:
#include <iostream>
#include <windows.h>
using namespace std;
#define buffer_size 1024
void main(){
HANDLE handle_src,handle_dst;
char *buffer;
DWORD NumberOfBytesRead,NumberOfBytesWrite;
int Flag1,Flag2;
handle_src=CreateFile("1.txt",GENERIC_READ,NULL,NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING,NULL);
handle_dst=CreateFile("2.txt",GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING,NULL);
if(handle_src==INVALID_HANDLE_VALUE)
{
cout<<"文件打开失败";
}
buffer = new char[buffer_size];
Flag1=ReadFile(handle_src,buffer,buffer_size,&NumberOfBytesRead,NULL);
Flag2=WriteFile(handle_dst,buffer,NumberOfBytesRead,&NumberOfBytesWrite,NULL);
CloseHandle(handle_src);
}
调试了下,发现FLAG2一直是0,不知道错在哪里了
[解决办法]
1:访问文件时,使用的偏移量=磁盘卷的扇区大小的整数倍;磁盘卷的扇区大小可以通过GetDiskFreeSpace()获得
2:读取写入的字节数=扇区大小的整数倍
3:缓存在进程地址空间的起始地址=扇区大小的整数倍
FILE_FLAG_NO_BUFFERING标志要求这些...
[解决办法]
handle_dst=CreateFile("2.txt",GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
[解决办法]
1:访问文件时,使用的偏移量=磁盘卷的扇区大小的整数倍;磁盘卷的扇区大小可以通过GetDiskFreeSpace()获得
2:读取写入的字节数=扇区大小的整数倍
3:缓存在进程地址空间的起始地址=扇区大小的整数倍
FILE_FLAG_NO_BUFFERING标志要求这些
特么的 我的回复不见了...
[解决办法]
CreateFile,WriteFile是MFC的方法
可以用C++方法来实现,如下:
#include <iostream>
#include <fstream> // 引入文件流
#include <string> // 引入标准库string类
int main()
{
std::string str;// 定义一个string类型变量用来存放读取的1.txt文件内容
std::ifstream infile( "1.txt ",std::ios::in);// 建立一个文件输入流
std::getline(infile,str, '\0 ');// getline函数默认读取一行数据,这里将第三个参数设为 '\0 ',可以
// 读取全部文件内容
infile.close(); // 读取后将文件关闭
std::ofstream outfile( "2.txt ",std::ios::out);// 建立一个文件输出流
outfile < <str; // 将str中存放的读取1.txt的内容写入到文件2.txt中
outfile.close(); // 写入后关闭文件
return 0;
}