日期:2014-05-17  浏览次数:20789 次

请大家帮忙想一个算法,谢谢!
C# code
List<FileInfo> fileList = new List<FileInfo>();


fileList 中包含若干个音频文件,数量不确定,现在需要对这些文件进行合并,最终返回一个大的音频文件,合并的代码如下:

C# code

FileStream AddStream = new FileStream(fullname1, FileMode.Create);

BinaryWriter AddWriter = new BinaryWriter(AddStream);

FileStream TempStreamA = new FileStream(fullname2, FileMode.Open);
BinaryReader TempReaderA = new BinaryReader(TempStreamA);
AddWriter.Write(TempReaderA.ReadBytes((int)TempStreamA.Length));
TempReaderA.Close();
TempStreamA.Close();

FileStream TempStreamB = new FileStream(fullname3, FileMode.Open);
BinaryReader TempReaderB = new BinaryReader(TempStreamB);
AddWriter.Write(TempReaderB.ReadBytes((int)TempStreamB.Length));
TempReaderB.Close();
TempStreamB.Close();
AddWriter.Close();
AddStream.Close();




其中:fullname1为合并以后新文件的文件名(可以自定义),fullname2、fullname3为合并前原始文件的文件名,

fileList 中的文件数量不确定,可能只有1个(实际上就不需要合并)、也可能2个,还可能2个以上,希望写一个函数来概括所有的情况,

请问大家这个函数应该如何写?

------解决方案--------------------
一个foreach 遍历整个 fileList

FileStream AddStream = new FileStream(fullname1, FileMode.Create);

BinaryWriter AddWriter = new BinaryWriter(AddStream);
foreach(var name in fileList)
{
FileStream TempStream = new FileStream(name, FileMode.Open);
BinaryReader TempReader = new BinaryReader(TempStream);
AddWriter.Write(TempReader.ReadBytes((int)TempStream.Length));
TempReaderA.disposd();
TempStreamA.Disposd();
}
------解决方案--------------------
遍历list取得FileStream TempStreamA = new FileStream(fullname2, FileMode.Open);
然后追加到 AddWriter