使用该代码。
using (var reader = new WaveFileReader(audioFileLocation))
{
// Do something....
}
如果给你一个WAV文件,你就会抛出异常:
Not a WAVE file - no RIFF header Exception Details: System.FormatationException: System.FormatException.Not a WAVE file - no RIFF header: 不是一个WAVE文件--没有RIFF头。
它锁定了文件 audioFileLocation
以防止它被删除。
有什么方法可以在使用阅读器之前检查是否存在一个有效的RIFF头?
尝试使用一个流。
using(var inputStream = new FileStream(audioFileLocation, FileMode.Open,
FileAccess.Write, FileShare.ReadWrite))
{
using (var reader = new WaveFileReader(inputStream))
{
// Do something....
}
}
如果... 这个 是当前代码的 WaveFileReader
它使用的类 File.OpenRead(waveFile)
的 "字符串重载 "和 Stream
返回的内容似乎没有被封闭处理。也许已经是followin的工作了。
using(var inputStream = File.OpenRead(audioFileLocation))
{
using (var reader = new WaveFileReader(inputStream))
{
// Do something....
}
}
因为这应该会处理流。
我有同样的代码,但是就在这段代码之前,我的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....
}