Ошибка "файл используется" при воспроизведении aac при добавлении байтов в aac
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();
}
}
Я пытаюсь объединить файлы AAC в fileList в выходной файл. при записи файла "3.aac" в файл outputfile.aac я открываю файл вывода с помощью MediaPlayer, затем FileStream возвращает исключение "файл используется", даже если режим FileShare - ReadWrite, это означает, что другие процессы могут читать и записывать в файл. Так в чем же причина?
Однако в этом случае выходной файл не блокируется
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
1 ответ
Решение
Когда вы используете FileShare.ReadWrite
Вы разрешаете последующее открытие файла в режиме чтения или записи.
MediaPlayer затем открывает файл с FileShare.Read
на его стороне, отказывая вам в доступе к файлу записи.