【发布时间】:2018-11-28 08:12:34
【问题描述】:
我不确定我的案例的正确问题是什么,但我会尽量描述得更好。我不得不提一下,我对这种语言了解不多,我严格地将它用于我的应用程序的可执行文件,主要是我在使用 Java。所以我有一个应用程序,它只有在我的 PC 中找到 java 时才会启动。我正在使用这样的东西:
ProcessStartInfo startJava = new ProcessStartInfo("java", JavaProcessArguments());
startJava.CreateNoWindow = !client.ShowConsole;
startJava.UseShellExecute = false;
但是,假设我想使用 openJDK,那么我必须将“java”更改为这样的:
ProcessStartInfo startJava = new ProcessStartInfo
(@"C:\Program Files (x86)\Java\openJDK_1.7\bin\java.exe", JavaProcessArguments());
继续,我想首先启动 openJDK,即使存在 java,所以我写了一个条件:
private void StartTheProcess()
{
string pathJDK = @"C:\Program Files (x86)\Java\openJDK_1.7\bin\";
bool isDirJDK7 = Directory.Exists(pathJDK);
if (isDirJDK7)
{
ProcessStartInfo startJava = new ProcessStartInfo(@"C:\Program Files (x86)\Java\openJDK_1.7\bin\java.exe", JavaProcessArguments());
startJava.CreateNoWindow = !client.ShowConsole;
startJava.UseShellExecute = false;
try
{
using (Process p = Process.Start(startJava))
{
p.WaitForExit();
}
}
catch (Win32Exception ex)
{
some error...
}
catch (Exception e)
{
some error...
}
}
else
{
ProcessStartInfo startJava = new ProcessStartInfo("java", JavaProcessArguments());
startJava.CreateNoWindow = !client.ShowConsole;
startJava.UseShellExecute = false;
try
{
using (Process p = Process.Start(startJava))
{
p.WaitForExit();
}
}
catch (Win32Exception ex)
{
some error...
}
catch (Exception e)
{
some error...
}
}
}
现在假设我在“C:\Program Files (x86)\Java\”文件夹中有多个openJDK版本:openJDK_1.7、openJDK_1.7_u1、openJDK_1.8等,我想启动最新的一。我应该如何做到这一点?我认为一种方法是比较在那里找到的子文件夹名称,但我真的不知道如何去做。所有子文件夹的内容相同,子文件夹的名称具有相同的结构(openJDK_1.X / openJDK_1.X_uYZ)。根据这个糟糕(最有可能)的代码,你能帮我吗? :D
【问题讨论】:
标签: c# directory subdirectory