2017-06-20 22 views
0

我操縱的專有文件與波形文件非常相似,但是具有自定義標題,比wav標題長(200字節對36字節)。樣本雖然相似。這些文件非常大(通常爲200Meg)。複製文件省略第一個X字符

我想批量轉換專有文件爲wav。

我用wavefile gem寫了一個簡短的腳本。我只是讀取整個樣本數組然後創建波形文件。它適用於較小的示例,但對於較大的示例我有一個內存分配錯誤。

我注意到使用Fileutils.cp,複製文件的速度非常快。我想知道如果我可以在「省略」前164個字節的情況下以某種方式複製文件,那麼只需在前36個字節中寫入波頭並重命名文件(.wav)即可。

什麼是最好的/最簡單的方法?

回答

1

像這樣的東西可能會工作:

File.open(src, 'rb') do |r| 
    File.open(dst, 'wb') do |w| 
    w.write(new_dst_header) 
    r.seek(200) 
    until r.eof? 
     w.write(r.read(chunk_size)) 
    end 
    end 
end 

越大chunk_size,走得越快,並使用更多的內存。