在 C# 中查找文件的目录
Posted
技术标签:
【中文标题】在 C# 中查找文件的目录【英文标题】:Find the directory of a file in C# 【发布时间】:2015-10-04 08:08:36 【问题描述】:我是 C# 新手,我一直在尝试使用 SoundPlayer 类播放声音。因此,在我在 Visual Studio(2015 社区)的解决方案中,我创建了一个名为 Music 的文件夹,并在那里拖放了一个 wav 文件。在属性中,我找到了文件路径,然后在 SoundPlayer 构造函数中使用。现在,它在桌面上。
我的问题是我会将实际程序(它只是控制台应用程序)移动到另一台计算机(使用不同的用户名......我不知道)。那么有没有办法 C# 可以确定文件的新位置(目录),这样我就不会出错?
SoundPlayer spPlayer = new SoundPlayer (@"C:\Users\tvavr\Desktop\Dango\mr_sandman.wav");
spPlayer.Play();
这是有效的代码。现在,我应该如何改变这条路径?
感谢您的回答。
【问题讨论】:
***.com/questions/20717407/…, ***.com/questions/20717407/…, ***.com/questions/7551319/…, ***.com/questions/12335618/… 您想在程序后面实际存在的地方播放声音吗? 如果你想一直播放同一个文件,最好从资源中播放,而不是从目录中播放。这样可以确保它始终存在。您还可以使用Path.Combine
为新位置构建路径
【参考方案1】:
使用如下动态路径:
SoundPlayer spPlayer = new SoundPlayer (Application.ExecutablePath +@"\mr_sandman.wav");
Application.ExecutablePath
将动态获取您的应用程序文件夹
【讨论】:
请不要使用“动态”作为流行语,使用Path.Combine()
组合路径。【参考方案2】:
这是一个只有您可以回答的设计决策。当您编写需要加载文件的控制台应用程序时,您有多种选择
选项#1:在程序执行时在参数列表中指定路径
假设你的程序名称是playsong,你可以这样运行它:
playsong C:/path-to-music-file/song.wav
您从 Main 的参数列表中获取歌曲文件的名称。 args 中的第一项是文件名:
static void Main(string[] args)
SoundPlayer spPlayer = new SoundPlayer(args[1]);
spPlayer.Play();
选项 #2:通过硬编码路径访问歌曲文件
static void Main()
SoundPlayer spPlayer = new SoundPlayer("C:/playsong/songs/song.wav");
spPlayer.Play();
选项 #3:访问相对于程序位置的歌曲文件
static void Main()
SoundPlayer spPlayer = new SoundPlayer(Application.ExecutablePath + "/songs/song.wav");
spPlayer.Play();
如果您以后想将其更改为图形用户界面 (GUI) 程序,您可以打开 OpenFileDialog 对话框,让用户选择文件。
【讨论】:
【参考方案3】:.NET 有built-in tools 可以访问当前用户桌面等位置: System.Environment.SpecialFolder.Desktop
【讨论】:
以上是关于在 C# 中查找文件的目录的主要内容,如果未能解决你的问题,请参考以下文章