文件在使用中出错当播放aac时,将字节附加到aac

本文关键字:aac 字节 播放 出错 文件 | 更新日期: 2023-09-27 18:05:09

var outputfile = "outputfile.aac";     
var fileList = new List<string>
                {
                    "1.aac",
                    "2.aac",
                    "3.aac",
                    "4.aac",
                    "5.aac",
                    "6.aac"
                };
                foreach (var file in fileList)
                {
                    using (var stream = new FileStream(outputfile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
                    {
                        var bytes = File.ReadAllBytes(file);
                        stream.Write(bytes, 0, bytes.Length);
                        stream.Flush();
                    }
                }

我尝试将fileList中的aac文件加入outputfile。当写入文件"3"时。到输出文件。aac,我用MediaPlayer打开outputfile,然后FileStream返回异常"文件在使用中",即使文件共享模式是读写,这意味着其他进程可以读写文件。那么原因在哪里呢?

但是,在这种情况下,输出文件没有被阻塞

Stream s = resp.GetResponseStream();
                    var fs = File.Exists(outputFile) ? new FileStream(outputFile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)
                        : new FileStream(outputFile, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
                    byte[] buffer = new byte[4096];
                    while (s.CanRead)
                    {
                        int bytesRead = s.Read(buffer, 0, buffer.Length);
                        fs.Write(buffer, 0, bytesRead);
                    }

p/s:我发现原因是因为它是aac文件

文件在使用中出错当播放aac时,将字节附加到aac

当您使用FileShare.ReadWrite时,您允许以读或写模式打开文件。

MediaPlayer然后打开带有FileShare.Read的文件,拒绝对文件的写访问。