我正在尝试检测给定文件是否存在。例如,假设我在这个目录中寻找Joystick.png:F:\ FrontEnd \ Themes \ Custom \ Images \ Platform \ Controller \ Joystick.png
我无法对目录结构进行硬编码,因为应用程序可能安装在别处。然而,目录结构不会改变。
我一直在使用这个
string path = $"pack://siteoforigin:,,,/Themes/Custom/Images/Controls/{game.Platform}/{controller}.png";
将路径发送到wpf上的图像但是我已经开始倾斜,我无法将同一个变量传递给File.Exists
。所以我不得不想出一个替代方案。
我发现了这个:
string exists = Assembly.GetEntryAssembly().Location;
它得到了我的结果:F:\ FrontEnd \ FrontEnd.exe
所以我的问题是,如何修改var exists
以便与var path
的结构相匹配?
答案 0 :(得分:1)
您可以使用System.IO.Path
的不同成员来操纵路径字符串。
var exePath = @"F:\FrontEnd\FrontEnd.exe";
var filePath = @"/Themes/Custom/Images/Controls/{game.Platform}/{controller}.png";
var relPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(exePath),filePath);
var packPath = @"pack://siteoforigin:,,," + relPath;
答案 1 :(得分:0)
试试这个
var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
var pathtoCombine = Path.Combine(path, "themes\\custom\\images\\controls\\pc");
var image = Path.Combine(pathtoCombine, "image.txt");
var exists = File.Exists(image);
您可以将"themes\\custom\\images\\controls\\pc"
更改为$"themes\\custom\\images\\controls\\{platform}\\{imagename}"
这给出了程序集的根目录。例如
c:\ users \\ documents \ visual studio 2015 \ Projects \ StringSandbox \ StringSandbox \ bin \ Debug