使用代码:
using (var reader = new WaveFileReader(audioFileLocation))
{
// Do something....
}如果给出一个引发异常的wav文件:
不是波形文件-没有RIFF头 异常详细信息: System.FormatException:不是波形文件-没有RIFF头
它锁定文件audioFileLocation,从而防止文件被删除。
在使用读取器之前,是否有任何方法检查是否存在有效的RIFF标头?
发布于 2014-07-18 11:34:07
尝试使用流:
using(var inputStream = new FileStream(audioFileLocation, FileMode.Open,
FileAccess.Write, FileShare.ReadWrite))
{
using (var reader = new WaveFileReader(inputStream))
{
// Do something....
}
}如果这是WaveFileReader类的当前代码,那么它使用的是File.OpenRead(waveFile),它会在建设器的“字符串重载”中使用File.OpenRead(waveFile),而返回的Stream似乎不会被关闭/释放。也许下面的方法已经奏效了:
using(var inputStream = File.OpenRead(audioFileLocation))
{
using (var reader = new WaveFileReader(inputStream))
{
// Do something....
}
}因为这应该会释放流。
发布于 2020-05-10 19:40:56
我有相同的代码,但就在我处理我的FileWriter之前,它正在写给audioFileLocation
fileWriter.Dispose; // writes to audioFileLocation
// ...
using (var reader = new WaveFileReader(audioFileLocation))
{
// Do something....
}一些运行代码的计算机速度太慢,无法重置到初始位置,导致在文件末尾搜索波形标头。解决办法是重新设置该位置:
using (var reader = new WaveFileReader(audioFileLocation))
{
reader.Position = 0;
// Do something....
}https://stackoverflow.com/questions/24824027
复制相似问题