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, это означает, что другие процессы могут читать и записывать в файл. Так где же причина?Ошибка «файл при использовании» при воспроизведении aac при добавлении байтов в aac
Однако в этом случае выходной файл не заблокирован
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: Я обнаружил, что причина, потому что это ААС файл
Когда вы говорите, что 'при записи файла" 3.mp3 "в outputfile.mp3, я открываю выходной файл с помощью MediaPlayer'. Открываете ли вы файл outputfile.mp3 перед выполнением инструкции в Visual Studio или после нее? – RBT
Кстати, не нужно делать как Flush(), так и использование в этом случае. – EJoshuaS
Я не могу воспроизвести вашу проблему. Хотя я использую медиаплеер VLC для открытия файла вывода файла. Не уверен, что это будет иметь значение, поскольку вы использовали другой музыкальный плеер. – RBT