获取VB.net目录中文件夹的名称

获取VB.net目录中文件夹的名称,vb.net,directory,filepath,Vb.net,Directory,Filepath,如果安装了Java 8并运行64和最新版本,则应该有一个名为(jre1.0.0_25)的文件夹 可以在这里找到:C:\ProgramFiles(x86)\Java 如何在Java下获取名称文件的名称,它将随着时间的推移而改变(现在是jre1.0.025) 我试过了 New DirectoryInfo("C:\Program Files (x86)\Java\").Name 但它不起作用 编辑: 出现了几个问题。 这是我写入数据库的windows服务的一部分 目前,java没有向数据库发布任何内

如果安装了Java 8并运行64和最新版本,则应该有一个名为(jre1.0.0_25)的文件夹 可以在这里找到:
C:\ProgramFiles(x86)\Java

如何在Java下获取名称文件的名称,它将随着时间的推移而改变(现在是jre1.0.025)

我试过了

New DirectoryInfo("C:\Program Files (x86)\Java\").Name
但它不起作用

编辑:

出现了几个问题。

  • 这是我写入数据库的windows服务的一部分 目前,java没有向数据库发布任何内容,因此它会出错,因为它希望得到答案
  • 我已经有了32位和64位的方法
  • 它只在室内使用,我完全可以控制Java的安装方式和安装位置
  • 它也将是英文的 对此提供一些指导将不胜感激。 先谢谢你

    更新:我正在尝试将下面的解决方案转换为函数,以便将其输出到数据库

        Private Function java() As String
        Dim sourceDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Java")
        Dim dirInfo = New DirectoryInfo(sourceDir)
        For Each d In dirInfo.GetDirectories()
            Console.WriteLine(d.Name)
        Next
    
        java = Console.ReadLine()
        'Return dirInfo.ToString
    
    
    End Function
    
    现在尝试不同的东西,我可以让代码变成空白或路径。
    我哪里出错了?

    我们需要确切地知道它是如何“不起作用”的。然而

    您需要查看DirectoryInfo.GetDirectories()的结果,如下所示:

    Imports System.IO
    
    Module Module1
    
        Sub Main()
            Dim sourceDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Java")
            Dim dirInfo = New DirectoryInfo(sourceDir)
            For Each d In dirInfo.GetDirectories()
                Console.WriteLine(d.Name)
            Next
    
            Console.ReadLine()
    
        End Sub
    
    End Module
    
    在我的计算机上,它输出:

    jre1.8.0_25
    jre6
    jre7
    
    您必须决定如何找出所需的目录

    我使用了
    Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
    ,因为如果Windows是不同的语言版本,“ProgramFiles(x86)”目录可能会被命名为其他名称。但是,Java安装程序确实允许它安装在其他地方,因此如果您想使它更健壮,就必须研究如何定位安装

    但是如果目的是查找当前安装的Java版本,您可能应该查看注册表:更多信息-我相信您可以进行一些搜索,以确定这是否仍然适用于Java 8

    检查JAVA.DLL

    一些注意事项:

    • 对于x86版本,似乎可以同时安装Java 7和Java 8
    • 您还可以安装x86 Java 7和x64 Java 8
    • 如果您的程序编译为以x86运行,
      Environment.SpecialFolder.ProgramFiles
      指向与
      Environment.SpecialFolder.ProgramFilesX86
      相同的位置,因此它不会检测到x64版本的Java
    • x64 Java 8将其版本报告为
      8.0
      (呸!我认为从目录名和
      Java-version
      报告“Java版本”1.8.025)的方式来看,它将是1.8)
    • 对于健壮性,您将不得不考虑您可能安装了什么,并相应地调整代码。
    我想到了这个:

    Function GetMaxJavaVersion() As Decimal
        ' N.B. If this program is run as x86 then the 64-bit Program Files directory will not be accessed even
        ' with Environment.SpecialFolder.ProgramFiles
        Dim sourceDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Java")
        ' search in all the subdirectories for "java.dll"
        Dim javaDlls = Directory.GetFiles(sourceDir, "java.dll", SearchOption.AllDirectories)
    
        ' arrange it so that 0 is returned if not found
        Dim versions As New List(Of Decimal) From {0D}
    
        For Each jd In javaDlls
            Console.WriteLine(jd)
            Dim versionInfo = FileVersionInfo.GetVersionInfo(jd)
            versions.Add(CDec(String.Format("{0}.{1}", versionInfo.ProductMajorPart, versionInfo.ProductMinorPart)))
        Next
    
        Return versions.Max
    
    End Function
    

    我相信您可以修改它以检查x86和“正常”“程序文件目录。

    我的目的是获取当前安装的Java版本。我曾经使用注册表来实现这一点,但是Java8有一个问题。请参阅我的另一篇关于这个问题的帖子,我在原来的帖子中回答了您的问题。我将开始研究你的答案。如果你在这个问题上给了你的其他帖子的链接,那会很有用;)我想你可以在每个目录中查找
    java.dll
    ,如果它存在,获取它的版本,然后,如果有多个,选择最高的版本。我想了想,但我不知道是否应该。我喜欢你的解决方案,但在将其转换为函数时遇到困难(见上文)