检查director中是否存在文件

问题描述 投票:0回答:1

我正在制作一个 C# 安装程序,它首先检查终端。然而,当我使用

File.Exists()
时,它总是返回 false。

这个问题有解决办法吗?

代码(最小):

if (File.Exists(Directory.GetCurrentDirectory() + @"%LocalAppData%\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"))
{
    WriteAtPosition(0, 29, "you have terminal! (gg)");
}
else
{
    WriteAtPosition(0, 29, "you no have terminal. (rip you)");
}

代码(完整):

Console.Write("\u001b[48;2;255;255;255m\u001b[38;2;40;155;204m");
Console.WriteLine("      ░▒▒▒▒▒▒▒▒▒███████▒▒▒██▒▒▒▒▒▒▒▒▒▒▒█████████████████████████████████████▒█▒▒▒███████████████████████████████████████");
Console.WriteLine("       ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒█████████████████████████████████▒▒▒▒▒▒████████████████████████████████████████");
Console.WriteLine("        ░▒▒▒▒▒▒▒▒▒░▒▒▒░░░░░░░░░░░░░░░░▒▒░░░▒▒▒▒▒▒███████████████████████▒▒▒▒▒▒▒▒████████████████████████████████████████");
Console.WriteLine("         ░▒▒▒▒▒▒░░░░░````           ░░░░░░░░░░░░░░▒▒▒█████▒██████████████▒▒░░░░▒▒▒▒████████▒▒███████████████████████████");
Console.WriteLine("          ░░░░░░                     ░░░░░░░░░  '░░▒▒▒█▒▒▒██████████████▒░░    ░░░░▒▒████▒▒▒▒▒▒▒▒▒▒▒████████████████████");
Console.WriteLine("            `                        ░░░  ░░░░░    ░░░▒▒▒▒▒▒███████████▒▒░░░░    ░░░▒▒▒▒▒▒▒░░░▒▒▒▒▒█████████████████████");
Console.WriteLine("                                      ░░░''░░░░     ░░▒▒▒▒▒▒▒██████████▒▒▒▒▒░░░  ░░░░░░░▒▒▒▒▒▒░▒▒▒██████████████████████");
Console.WriteLine("                                                     ░░░░░░▒▒▒▒████████▒▒▒▒░░`    ░░░░░░░▒▒▒▒▒▒▒████████████████████████");
Console.WriteLine("                                                       ```░░░▒▒██▒▒▒▒▒▒▒▒▒░░░    ░░░░░░░▒▒▒▒▒▒▒█████████████████████████");
Console.WriteLine("░░                                                         ░░▒▒█▒▒░░░░░░░░    ░░░░░░░░░▒▒▒▒▒▒█████████████████████▒▒▒▒▒▒");
Console.WriteLine("░░░░░                                    ░░░              ░▒▒███▒▒▒░        ░░░░░░░░░░░░▒▒▒▒▒▒▒███████████████▒▒▒▒▒▒▒▒▒▒");
Console.WriteLine("░░░░░░                                 ░░▒▒▒░░░░         ░▒▒▒███▒▒░░         ░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒");
Console.WriteLine("░░░░░░░                               ░░░▒▒▒▒▒▒▒▒▒░░   .░▒▒▒██████▒░░      ░░░░░░░░░░░░░▒░░▒▒▒░▒▒▒▒████████▒▒▒▒▒░░░░▒▒▒▒");
Console.WriteLine(" '░░░░░                               ░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒███████████@▒▒▒░░░░░▒▒▒▒▒▒░░░▒▒▒▒▒▒▒▒▒▒▒▒▒█████████▒▒▒▒░░░░░░▒▒▒");
Console.WriteLine("                                  ░░░░░░ '░▒▒▒▒▒███████████████████████▒▒▒░░▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒█████████▒▒▒▒▒░░░░░░▒▒▒");
Console.WriteLine("░       ░░░░░░                    ░░'     ░▒▒▒▒▒▒██████████████████████▒▒▒░▒▒▒▒▒░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒░░░▒▒▒▒▒▒▒");
Console.WriteLine("░░      ░░░░░░░░                            ░▒▒▒▒▒▒█████████████████████▒▒▒▒▒▒██▒▒▒▒▒▒██████▒▒▒▒▒▒████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒");
Console.WriteLine("░░░      ░░░░░░░░                             ░░▒▒▒▒▒▒▒██████████████████████████████████████▒████████████████████████▒▒");
Console.WriteLine("░░░      ░░░░░░░                                 '░░▒░░▒▒█████████████████████████████████████████████████████████████▒▒");
Console.WriteLine("░░░                                               ░░░░░░░▒██████████████████████████████████████████████████████████▒▒▒▒");
Console.WriteLine("░                  ░░░                               ░░░░▒▒▒▒██▒█████████████████████████████████████████████████▒▒▒▒▒▒▒");
Console.WriteLine("░            ░░░░░░░░░░░░░░░░░░░░░░░░░░░             ░░░░░▒▒████▒▒▒▒▒▒███████████████████████████████████████████▒▒▒▒▒▒▒");
Console.WriteLine("░░░ ░░░    ░░░░░░░░░░░▒▒▒▒░░░░░░░░▒▒▒░░░░░░░░░░    ░  ░ ░░░░▒▒▒▒░░░░░░░░░░░░░▒▒▒▒▒████████████████████████████████▒▒▒▒▒▒");
Console.WriteLine("░░     ░░░░░░░░░░░░▒▒▒▒▒▒▒▒░░░░░░░▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒███████████████████████████████████");
Console.WriteLine("░      ░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒░░░░░░░▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒██████████████████████████████▒▒▒");
Console.WriteLine("░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░▒░░░░░░░▒▒░░░░░░░▒▒▒▒██▒▒▒▒▒███████████████████████████");
Console.WriteLine("░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒░░░░░░▒▒▒▒░▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒█████████████████████████████████");
Console.Write("\u001b[48;2;0;0;0m\u001b[38;2;255;255;255m");
// WriteAtPosition(0, 28, "████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████");
WriteAtPosition(0, 28, "██");
WriteAtPosition(0, 29, "Checking for Terminal...");
if (File.Exists(Directory.GetCurrentDirectory() + @"%LocalAppData%\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"))
{
    WriteAtPosition(0, 29, "you have terminal! (gg)");
}
else
{
    WriteAtPosition(0, 29, "you no have terminal. (rip you)");
}
Thread.Sleep(10000);
static void WriteAtPosition(int left, int top, string text)
{
    Console.CursorLeft = left;
    Console.CursorTop = top;

    Console.WriteLine(text);
}

c# console
1个回答
1
投票

这是因为该文件不存在,至少在您指定的路径中不存在。

Directory.GetCurrentDirectory()
返回当前目录的绝对路径,因此将
@"%LocalAppData%\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"
附加到该路径没有意义。

您只想测试该文件是否存在于您的 LocalAppData 路径中。但是,如果您尝试使用该路径,则

File.Exists
不起作用(它不理解
%LocalAppData%
通配符),因此您必须首先使用
%LocalAppData%
获取
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
的位置,然后连接路径的其余部分你正在寻找这样的

File.Exists(@$"{Environment.GetFolderPath( Environment.SpecialFolder.LocalApplicationData)}\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe")

或更好

Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), @"\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe");
© www.soinside.com 2019 - 2024. All rights reserved.