在Rails应用程序中,我正在使用以下内容读取网络位置上的文件:
Dir.chdir('\\server\share')
Dir.glob('**/*.txt').each do |f|
....
end
我想使用Ruby在这个目录(Windows PC)上找到可用的磁盘空间。
要查找本地磁盘上的可用字节,我之前使用过sys-filesystem gem:
require 'sys/filesystem'
stat = Sys::Filesystem.stat("C:\\")
bytes = stat.block_size * stat.blocks_available
我只能获得sys-filesystem来返回本地磁盘或已安装的网络路径的信息。网络位置的格式为\\server\share
。
有人可以提出替代方案吗?
答案 0 :(得分:0)
根据lurker的建议,Windows API可以返回可用磁盘空间:
require "Win32API"
GetDiskFreeSpaceEx = Win32API.new("kernel32", "GetDiskFreeSpaceEx",
['p','p','p','p'], 'i')
def get_disk_free_space(path)
free_caller = " " * 8
total = " " * 8
free = " " * 8
GetDiskFreeSpaceEx.call(path, free_caller, total, free)
l,h = free_caller.unpack("II")
l + (h << 32)
end
path = "\\\\server\\share\\"
puts "#{get_disk_free_space(path)} bytes"
puts "#{(get_disk_free_space(path)/1073741824.0).round(2)} GB"
确保路径具有尾部反斜杠。