gpt4 book ai didi

c# - 如何使用 Windows 窗体和 C# 将嵌入的音乐文件复制到路径

转载 作者:行者123 更新时间:2023-11-30 22:29:27 24 4
gpt4 key购买 nike

我在 Visual Studio 2010 上制作了一个新项目。它是一个 Windows 窗体项目,并使用 .NET Framework 4 Client Profile 完成。

我在上面放了一个嵌入式 WAV 声音文件。

我唯一想做的就是将它复制到某个路径,让我们以桌面为例。我怎样才能做到这一点?

我已经尝试过这些:

How to copy file From Resources?

Read a file from a resource and write it to disk in C#

Write file from assembly resource stream to disk

然而,我总是遇到麻烦。例如:

如果我添加名为 Take Over Control.wav 的音频资源,它会添加名称为 Take_Over_Control。然后,我只需在主窗体中添加一个按钮,上面写着“复制”。然后,那个按钮的点击事件是这样的:

private void ButtonCopyClick(object sender, EventArgs e)
{
Stream resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("Take_Over_Control");
if (resource == null)
{
throw new ArgumentException();
}
Stream output = File.OpenWrite(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)+"\\Sound.wav");
resource.CopyTo(output);
}

问题是...无论我是放置 Take_Over_Control 还是 Resources.Take_Over_ControlProperties.Resources.Take_Over_Control 等等,在 GetManifestResourceStream 部分,我总是停留在 throw new ArgumentException(); 上,所以,这意味着 resourcenull ,并且它在 Stream resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("Take_Over_Control"); 行上分配不当。

我试过的其他方法也有问题。这里有什么问题吗?如何以正确的方式复制这个嵌入的音频文件!?

最佳答案

首先,您是否确定您的 WAV 文件是“构建操作”属性下的嵌入式资源?如果是这样,看起来您的 WAV 文件路径可能是错误的。这条线...

Stream resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("Take_Over_Control");

应该是

Stream resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("myProject.resources.Take_Over_Control.wav");

其中 myProject 是您项目的名称,resources 是保存 WAV 文件的文件夹。所以如果这是你的 wav 文件的路径,上面的代码将适用......“c:\myProject\resources\Take_Over_Control.wav

希望对你有帮助

关于c# - 如何使用 Windows 窗体和 C# 将嵌入的音乐文件复制到路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com