相关疑难解决方法(0)

以合理,安全和有效的方式复制文件

我搜索一个复制文件(二进制或文本)的好方法.我写过几个样本,每个人都在工作.但我想听听经验丰富的程序员的意见.

我错过了很好的例子并搜索了一种适用于C++的方法.

ANSI-C-WAY

#include <iostream>
#include <cstdio>    // fopen, fclose, fread, fwrite, BUFSIZ
#include <ctime>
using namespace std;

int main() {
    clock_t start, end;
    start = clock();

    // BUFSIZE default is 8192 bytes
    // BUFSIZE of 1 means one chareter at time
    // good values should fit to blocksize, like 1024 or 4096
    // higher values reduce number of system calls
    // size_t BUFFER_SIZE = 4096;

    char buf[BUFSIZ];
    size_t size;

    FILE* source = fopen("from.ogv", "rb");
    FILE* dest = fopen("to.ogv", "wb"); …
Run Code Online (Sandbox Code Playgroud)

c++ file-io

292
推荐指数
4
解决办法
18万
查看次数

c ++中不规则的文件写入性能

我正在编写一个应用程序,它通过简单的函数调用接收二进制数据流,例如put(DataBLock, dateTime);每个数据包为4 MB

我必须将这些数据块写成单独的文件,以备将来使用时使用一些额外的数据,如id,插入时间,标签等...

所以我都尝试了这两种方法:

首先FILE:

data.id = seedFileId; 
seedFileId++;

std::string fileName = getFileName(data.id);

char *fNameArray = (char*)fileName.c_str(); 
FILE* pFile;
pFile = fopen(fNameArray,"wb");

fwrite(reinterpret_cast<const char *>(&data.dataTime), 1, sizeof(data.dataTime), pFile);        
data.dataInsertionTime = time(0);
fwrite(reinterpret_cast<const char *>(&data.dataInsertionTime), 1, sizeof(data.dataInsertionTime), pFile);
fwrite(reinterpret_cast<const char *>(&data.id), 1, sizeof(long), pFile);
fwrite(reinterpret_cast<const char *>(&data.tag), 1, sizeof(data.tag), pFile);
fwrite(reinterpret_cast<const char *>(&data.data_block[0]), 1, data.data_block.size() * sizeof(int), pFile);
fclose(pFile);
Run Code Online (Sandbox Code Playgroud)

第二个ostream:

ofstream fout;
data.id = seedFileId; 
seedFileId++;

std::string fileName = getFileName(data.id);
char *fNameArray = (char*)fileName.c_str(); …
Run Code Online (Sandbox Code Playgroud)

c++ file-io file visual-studio-2008

5
推荐指数
1
解决办法
1837
查看次数

标签 统计

c++ ×2

file-io ×2

file ×1

visual-studio-2008 ×1