`Не файл WAVE - без заголовка RIFF` блокирует файл

1

Используя код:

using (var reader = new WaveFileReader(audioFileLocation))
{
    // Do something....
}

Если задан wav файл, который генерирует исключение:

Не WAVE файл - нет заголовка RIFF
Сведения об исключении: System.FormatException: не WAVE файл - нет заголовка RIFF

Он блокирует файл audioFileLocation который предотвращает его удаление.

Есть ли способ проверить наличие правильного заголовка RIFF перед использованием читателя?

  • 1
    Скорее всего, есть ошибка в WaveFileReader , которая не закрывает файл. Где вы взяли этот класс?
  • 0
    Как долго файл заблокирован? Пока процесс не прекратится или недолго?
Показать ещё 6 комментариев
Теги:
naudio

1 ответ

2
Лучший ответ

Попробуйте использовать поток:

using(var inputStream = new FileStream(audioFileLocation, FileMode.Open, 
                           FileAccess.Write, FileShare.ReadWrite))
{
    using (var reader = new WaveFileReader(inputStream))
    {
        // Do something....
    }
}

Если THIS является текущим кодом класса WaveFileReader он использует File.OpenRead(waveFile) в "перегрузке строки" константы, и возвращаемый Stream кажется не закрытым/удаленным. Может быть, уже работает follownin:

using(var inputStream = File.OpenRead(audioFileLocation))
{
    using (var reader = new WaveFileReader(inputStream))
    {
        // Do something....
    }
}

поскольку это должно распоряжаться потоком.

  • 0
    Блестящий, спасибо! Это решает это.
  • 2
    Это решает проблему OP, WaveFileReader класс WaveFileReader все еще содержит ошибку.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню