2012-04-11 88 views
-1

我正在開發一個文件分割器&合併算法,在那裏我偶然發現了一個問題如何合併文件(我分裂)與他們原來的擴展名(文件格式)。我有一個想法,即在第一個分割文件塊的開頭寫入文件格式(如果我已經將文件分成三個文件,然後將文件格式存儲在1.bij文件中)。這個想法會起作用嗎?你知道更好的主意,所以請與我分享。文件合併C++

感謝

+0

將擴展名保留在分割文件名中? ('split.iso.1','split.iso.2' ...) – Mat 2012-04-11 08:49:10

+0

我不想在分割文件中保留原始文件擴展名! – 2012-04-11 08:51:37

+1

然後將信息存儲在拆分中或單獨的「元數據」文件中......我並不真正明白你要問什麼。 – Mat 2012-04-11 08:53:39

回答

1

您可以包括用於其全名的每個文件分裂一個頭,而且 - 例如 - 按照原始大小,校驗等。


編輯:如何將文本寫入二進制流

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()); 
+0

您能否詳細說明如何將標題添加到文件中。 – 2012-04-11 09:16:42

+0

標題只是一堆字節添加到一些有用的數據文件的開頭。在實際數據之前將其寫入分割的文件。算法會有所不同,具體取決於分割算法的工作方式。除非您發佈一些源代碼,否則我無法提出任何建議。 – Spook 2012-04-11 09:19:50

+0

是的,我的想法,正如我上面提到的。但問題是我將如何以二進制模式寫文本.. – 2012-04-11 09:22:25

1

爲什麼不能讓用戶選擇使用命令行參數的文件名?您可以使用-o命令行選項。使用-文件名讓用戶重定向到標準輸出的獎勵點。然後,他可以用另一種工具管道。例如:merger -o - part*.bin | tar zxvf -