将MemoryStream保存到File会产生0个字节

时间:2018-04-18 21:58:22

标签: c# filestream using memorystream

我正在使用此代码将MP3 MemoryStream写入文件:

using (var nSpeakStreamAsMp3 = new MemoryStream())
using (var nWavFileReader = new WaveFileReader(nSpeakStream))
using (var nMp3Writer = new LameMP3FileWriter(nSpeakStreamAsMp3, nWavFileReader.WaveFormat, LAMEPreset.STANDARD_FAST))
{
    nWavFileReader.CopyTo(nMp3Writer);

    string sPath = "C:\\inetpub\\wwwroot\\server\\bin\\mymp3.mp3";

    using (FileStream nFile = new FileStream(sPath, FileMode.Create, System.IO.FileAccess.Write))
    {
        nSpeakStreamAsMp3.CopyTo(nFile);
    }

    sRet = (String.Concat("data:audio/mpeg;base64,", Convert.ToBase64String(nSpeakStreamAsMp3.ToArray())));
}

return sRet;

由于某些我没有看到的原因,这会产生一个0字节的文件。 但是,MP3流有效并且确实有效。我将它作为Base64String传递给一个网站,我确实听到了。

这里可能出现错误?

1 个答案:

答案 0 :(得分:1)

  1. nSpeakStreamAsMp3目前位于信息流的 end ;你需要像录像机一样思考:在你再次复制价值之前要善待,倒带(nSpeakStreamAsMp3.Position = 0;
  2. 确保你冲洗nMp3Writer;如果可能,请完全关闭nMp3Writer