首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“不是波文件-没有RIFF头‘锁文件

“不是波文件-没有RIFF头‘锁文件
EN

Stack Overflow用户
提问于 2014-07-18 11:30:57
回答 2查看 5.3K关注 0票数 1

使用代码:

代码语言:javascript
复制
using (var reader = new WaveFileReader(audioFileLocation))
{
    // Do something....
}

如果给出一个引发异常的wav文件:

不是波形文件-没有RIFF头 异常详细信息: System.FormatException:不是波形文件-没有RIFF头

它锁定文件audioFileLocation,从而防止文件被删除。

在使用读取器之前,是否有任何方法检查是否存在有效的RIFF标头?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-18 11:34:07

尝试使用流:

代码语言:javascript
复制
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似乎不会被关闭/释放。也许下面的方法已经奏效了:

代码语言:javascript
复制
using(var inputStream = File.OpenRead(audioFileLocation))
{
    using (var reader = new WaveFileReader(inputStream))
    {
        // Do something....
    }
}

因为这应该会释放流。

票数 2
EN

Stack Overflow用户

发布于 2020-05-10 19:40:56

我有相同的代码,但就在我处理我的FileWriter之前,它正在写给audioFileLocation

代码语言:javascript
复制
fileWriter.Dispose; // writes to audioFileLocation
// ...
using (var reader = new WaveFileReader(audioFileLocation))
{
    // Do something....
}

一些运行代码的计算机速度太慢,无法重置到初始位置,导致在文件末尾搜索波形标头。解决办法是重新设置该位置:

代码语言:javascript
复制
using (var reader = new WaveFileReader(audioFileLocation))
{
    reader.Position = 0;
    // Do something....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24824027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档