我正在開發一個文件分割器&合併算法,在那裏我偶然發現了一個問題如何合併文件(我分裂)與他們原來的擴展名(文件格式)。我有一個想法,即在第一個分割文件塊的開頭寫入文件格式(如果我已經將文件分成三個文件,然後將文件格式存儲在1.bij文件中)。這個想法會起作用嗎?你知道更好的主意,所以請與我分享。文件合併C++
感謝
我正在開發一個文件分割器&合併算法,在那裏我偶然發現了一個問題如何合併文件(我分裂)與他們原來的擴展名(文件格式)。我有一個想法,即在第一個分割文件塊的開頭寫入文件格式(如果我已經將文件分成三個文件,然後將文件格式存儲在1.bij文件中)。這個想法會起作用嗎?你知道更好的主意,所以請與我分享。文件合併C++
感謝
您可以包括用於其全名的每個文件分裂一個頭,而且 - 例如 - 按照原始大小,校驗等。
編輯:如何將文本寫入二進制流
fstream f(/* initialize*/);
std::string s = "asdf";
// Store the size of text
auto size = s.size();
f.write(&size, sizeof(size));
// Store the string itself
f.write(s.c_str(), s.size());
您能否詳細說明如何將標題添加到文件中。 – 2012-04-11 09:16:42
標題只是一堆字節添加到一些有用的數據文件的開頭。在實際數據之前將其寫入分割的文件。算法會有所不同,具體取決於分割算法的工作方式。除非您發佈一些源代碼,否則我無法提出任何建議。 – Spook 2012-04-11 09:19:50
是的,我的想法,正如我上面提到的。但問題是我將如何以二進制模式寫文本.. – 2012-04-11 09:22:25
爲什麼不能讓用戶選擇使用命令行參數的文件名?您可以使用-o
命令行選項。使用-
文件名讓用戶重定向到標準輸出的獎勵點。然後,他可以用另一種工具管道。例如:merger -o - part*.bin | tar zxvf -
將擴展名保留在分割文件名中? ('split.iso.1','split.iso.2' ...) – Mat 2012-04-11 08:49:10
我不想在分割文件中保留原始文件擴展名! – 2012-04-11 08:51:37
然後將信息存儲在拆分中或單獨的「元數據」文件中......我並不真正明白你要問什麼。 – Mat 2012-04-11 08:53:39