Java 带有UNC的getTotalSpace()
我正试图通过UNC从Windows主机在NAS共享上使用Java 带有UNC的getTotalSpace(),java,java-io,Java,Java Io,我正试图通过UNC从Windows主机在NAS共享上使用File.getTotalSpace()和File.getFreeSpace() 由于NAS中存在各种链路,可用/总空间将根据请求的特定目录而有所不同 例如,在DOS框中: dir \\nas\level1 可能会返回12234567个可用字节,但: dir \\nas\level1\level2\level3 返回987654321个可用字节 我尝试: new File("\\\\nas\\level1\\level2\\level3
File.getTotalSpace()
和File.getFreeSpace()
由于NAS中存在各种链路,可用/总空间将根据请求的特定目录而有所不同
例如,在DOS框中:
dir \\nas\level1
可能会返回12234567个可用字节,但:
dir \\nas\level1\level2\level3
返回987654321个可用字节
我尝试:
new File("\\\\nas\\level1\\level2\\level3").getFreeSpace();
但这返回12234567。似乎getFreeSpace()
和getTotalSpace()
正在从路径的根(\\nas,在本例中)而不是从请求的级别检索报告的空间
如果我将该UNC路径映射到驱动器号,例如:
net use s: \\nas\level1\level2\level3
然后
将返回正确的值。但是我必须遍历一组UNC路径,所以映射它们是不可行的
那么,如何从我请求的特定目录级别获取基于UNC的共享的可用/总空间呢?我假设您从Windows资源管理器获得了预期的已使用空间/可用空间值 如果是这样,您还应该能够通过编程方式从WMI获取这些相同的值 建议:
$disk = Get-WmiObject Win32_LogicalDisk -ComputerName remotecomputer -Filter "DeviceID='C:'" |
Foreach-Object {$_.Size,$_.FreeSpace}
下面是另一个例子:
我假设您从Windows资源管理器中获得了预期的已使用空间/可用空间值 如果是这样,您还应该能够通过编程方式从WMI获取这些相同的值 建议:
$disk = Get-WmiObject Win32_LogicalDisk -ComputerName remotecomputer -Filter "DeviceID='C:'" |
Foreach-Object {$_.Size,$_.FreeSpace}
下面是另一个例子:
建议:试试java.nio。例如,
Files.getFileStore(path.get(“path to file”).toRealPath()).getUsableSpace()代码>。感谢您的建议,但它产生了相同的结果。建议:尝试java.nio。例如,Files.getFileStore(path.get(“path to file”).toRealPath()).getUsableSpace()代码>。感谢您的建议,但它产生了相同的结果。谢谢,我将检查这些选项。上面的第一个脚本似乎只适用于远程计算机上的物理或逻辑设备(驱动器号)。第二种方法似乎可以检索已使用的空间,但不能检索可用空间或总空间。我遗漏了什么吗?谢谢,我会检查这些选项。上面的第一个脚本似乎只适用于远程机器上的物理或逻辑设备(驱动器号)。第二种方法似乎可以检索已使用的空间,但不能检索可用空间或总空间。我错过什么了吗?
$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"
}