比较子文件夹名称

时间:2018-11-28 08:12:34

标签: c# directory subdirectory

我不确定该案件的正确问题是什么,但我会尽力描述。我不得不提到,我对这种语言了解不多,我严格将其用于应用程序的可执行文件,主要是我在弄乱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());

继续前进,即使Java存在,我也想先启动openJDK,所以我写了一个条件来做到这一点:

    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

1 个答案:

答案 0 :(得分:0)

您可以尝试一些方法,

通过以下方式分割目录名称字符串 var version = string.split('_'),然后版本为version[1] = "1.7",您可以将所有这些都转换为double / decimals / floats等,然后将数据排序,得到最新版本(编号最高的版本并返回其目录

您可以尝试的第二件事是检查Directory.GetLastWriteTime(String),您可以将其进行比较,并找到最后一个,请不要因为这可以更改文件夹而根本不可靠。