You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NAudio转换MP3为Wav时遇DirectoryNotFoundException错误求助

问题分析与解决

你遇到的DirectoryNotFoundException是因为目标路径里的文件夹不存在——Path.Combine只是把字符串拼接成路径格式,不会自动创建实际的文件夹目录,而WaveFileWriter.CreateWaveFile需要目标文件所在的文件夹已经存在才能写入文件。

解决方法

在生成输出文件路径后、写入文件前,先创建目标文件夹:

修改你的代码,在拼接出ParentSubFolder后,添加创建目录的代码:

const string ext = ".wav";

var dlg = new OpenFileDialog
{
    Filter = Constants.FILEFILTER
};

var res = dlg.ShowDialog();

if (res == true)
{
    var AudioName = Path.GetFileNameWithoutExtension(dlg.FileName);
    var FoderParent = Path.Combine(DocumentsPath, Constants.TRANSCRIPTIONS);
    var ParentSubFolder = Path.Combine(FoderParent, Constants.AUDIO);
    
    // 关键:自动创建所有不存在的父目录
    Directory.CreateDirectory(ParentSubFolder);
    
    var filename = Path.Combine(ParentSubFolder, $"{AudioName}{ext}");

    using var mp3 = new Mp3FileReader(dlg.FileName);
    using var ws = WaveFormatConversionStream.CreatePcmStream(mp3);
    WaveFileWriter.CreateWaveFile(filename, ws);
}

补充说明

Directory.CreateDirectory方法会自动创建路径中所有不存在的文件夹层级——不管是Transcriptions还是它下面的Audio,只要不存在都会被创建;如果文件夹已经存在,这个方法也不会报错,使用起来很安全。

内容的提问来源于stack exchange,提问作者edu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:05:35