使用代码:
using (var reader = new WaveFileReader(audioFileLocation))
{
// Do something....
}
如果给出了抛出异常的wav文件:
不是WAVE文件 - 没有RIFF标题
异常详细信息:System.FormatException:不是WAVE文件 - 没有RIFF标题
它锁定文件audioFileLocation
,阻止其被删除。
在使用阅读器之前,有没有办法检查是否存在有效的RIFF标题?
答案 0 :(得分:2)
尝试使用流:
using(var inputStream = new FileStream(audioFileLocation, FileMode.Open,
FileAccess.Write, FileShare.ReadWrite))
{
using (var reader = new WaveFileReader(inputStream))
{
// Do something....
}
}
如果THIS是WaveFileReader
类的当前代码,它在consturctor的“字符串重载”中使用File.OpenRead(waveFile)
并且返回的Stream
似乎不会被关闭/设置。也许已经有以下作品:
using(var inputStream = File.OpenRead(audioFileLocation))
{
using (var reader = new WaveFileReader(inputStream))
{
// Do something....
}
}
因为这应该处理流。
答案 1 :(得分:0)
我有相同的代码,但是在我将FileWriter处理掉之前,它正在写入audioFileLocation
fileWriter.Dispose; // writes to audioFileLocation
// ...
using (var reader = new WaveFileReader(audioFileLocation))
{
// Do something....
}
某些运行该代码的计算机由于太慢而无法重置到初始位置,结果是在文件末尾搜索了wave头。解决方法是重置位置:
using (var reader = new WaveFileReader(audioFileLocation))
{
reader.Position = 0;
// Do something....
}