获取VB.net目录中文件夹的名称
如果安装了Java 8并运行64和最新版本,则应该有一个名为(jre1.0.0_25)的文件夹 可以在这里找到:获取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没有向数据库发布任何内
C:\ProgramFiles(x86)\Java
如何在Java下获取名称文件的名称,它将随着时间的推移而改变(现在是jre1.0.025)
我试过了
New DirectoryInfo("C:\Program Files (x86)\Java\").Name
但它不起作用
编辑:
出现了几个问题。
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
相同的位置,因此它不会检测到x64版本的JavaEnvironment.SpecialFolder.ProgramFilesX86
- x64 Java 8将其版本报告为
(呸!我认为从目录名和8.0
报告“Java版本”1.8.025)的方式来看,它将是1.8)Java-version
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
,如果它存在,获取它的版本,然后,如果有多个,选择最高的版本。我想了想,但我不知道是否应该。我喜欢你的解决方案,但在将其转换为函数时遇到困难(见上文)