gpt4 book ai didi

java - getTotalSpace() 与 UNC

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:28 25 4
gpt4 key购买 nike

我正在尝试从 Windows 主机通过 UNC 在 NAS 共享上使用 File.getTotalSpace()File.getFreeSpace()

由于 NAS 中的链接不同,可用空间/总空间会根据请求的具体目录而有所不同。

例如,在 DOS 框中:

dir \\nas\level1

可能会返回 12,234,567 字节空闲空间,但是:

dir \\nas\level1\level2\level3

返回 987,654,321 字节空闲空间。

我尝试:

new File("\\\\nas\\level1\\level2\\level3").getFreeSpace();

但这会返回 12,234,567。看起来 getFreeSpace()getTotalSpace() 正在从路径的根目录(在本例中为\\nas)检索报告的空间,而不是从我请求的级别检索。

如果我将该 UNC 路径映射到驱动器号,例如:

net use s: \\nas\level1\level2\level3

然后

new File("s:").getFreeSpace();

将返回正确的值。但我必须迭代一堆 UNC 路径,因此将它们全部映射是不可行的。

那么如何从我请求的特定目录级别获取基于 UNC 的共享的可用/总空间?

最佳答案

我假设您从 Windows 资源管理器中获得了预期的已用空间/可用空间值。

如果是这样,您还应该能够以编程方式从 WMI 获取这些相同的值。

建议:

  1. 使用Java::WMI library or wrapperjWMI .

  2. 编写一个简单的 VBScript 或 PowerShell脚本,然后 call your script from Java .

下面是一个简单的 PowerShell (.ps1) 示例,来自上面的链接:

$disk = Get-WmiObject Win32_LogicalDisk -ComputerName remotecomputer -Filter "DeviceID='C:'" |
Foreach-Object {$_.Size,$_.FreeSpace}

这是另一个例子:

https://superuser.com/questions/911534/determine-the-size-of-a-network-folder

$startFolder = "\\pmintl.net\rbsdata\SPA_BB01"

$colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)
"$startFolder -- " + "{0:N2}" -f ($colItems.sum / 1MB) + " MB"

$colItems = (Get-ChildItem $startFolder -recurse | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
foreach ($i in $colItems)
{
$subFolderItems = (Get-ChildItem $i.FullName | Measure-Object -property length -sum)
$i.FullName + " -- " + "{0:N2}" -f ($subFolderItems.sum / 1MB) + " MB"
}

关于java - getTotalSpace() 与 UNC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com