Hi, All
This module works OK under Windows, getting the letters of the drives and getting the free space of them.
Under Linux this code works if the drive is set to "/".
But as i can understand - it's not an universal way to get the info about any Linux path ? That may be located on any partition...
Correct ? Please, suggest to understand well.
This module works OK under Windows, getting the letters of the drives and getting the free space of them.
Under Linux this code works if the drive is set to "/".
B4X:
'bytes
Private Sub Get_FreeSpace(Fold As String) As Long
'(ArrayList) [C:\, D:\, E:\, P:\, R:\]
'(MyMap) {C:\=126100873216, D:\=125829115904, E:\=104857595904, P:\=258932207616, R:\=104857595904}
'(MyMap) {C:\=30034104320, D:\=34107752448, E:\=20868218880, P:\=16199786496, R:\=20868218880}
'(MyMap) {C:\=30034104320, D:\=34107752448, E:\=20868218880, P:\=16199786496, R:\=20868218880}
'(MyMap) {C:\=96066768896, D:\=91721363456, E:\=83989377024, P:\=242732421120, R:\=83989377024}
If DetectOS = "windows" Then
Dim drive As String = Fold.SubString2(0, 3).ToUpperCase
Else If DetectOS = "linux" Then
Dim drive As String = "/"
End If
Private TotalDrives As List
TotalDrives.Initialize
TotalDrives=DiskUtils.GetDrives
'Log (TotalDrives)
Private TotalDriveCapacity As Map
TotalDriveCapacity.Initialize
TotalDriveCapacity=DiskUtils.GetDrivesCapacity
'Log (TotalDriveCapacity)
Private TotalUsableSpace As Map
TotalUsableSpace.Initialize
TotalUsableSpace=DiskUtils.GetUsableSpace
'Log (TotalUsableSpace)
Private TotalFreeSpace As Map
TotalFreeSpace.Initialize
TotalFreeSpace=DiskUtils.GetFreeSpace
'Log(TotalFreeSpace)
Private Writable As Map
Writable.Initialize
Writable=DiskUtils.Writable
Private UsedSpace As Map
UsedSpace.Initialize
UsedSpace=DiskUtils.GetUsedSpace
'Log(UsedSpace)
Dim u As Long = TotalUsableSpace.Get(drive)
Return u
Dim t As Long = TotalDriveCapacity.Get(drive)
Dim res As Int = (100-((t - u)/t) * 100)
'Log (res)
Return res
End Sub
Sub DetectOS As String
Dim os As String = GetSystemProperty("os.name", "").ToLowerCase
If os.Contains("win") Then
Return "windows"
Else If os.Contains("mac") Then
Return "mac"
Else
Return "linux"
End If
End Sub
But as i can understand - it's not an universal way to get the info about any Linux path ? That may be located on any partition...
Correct ? Please, suggest to understand well.
Last edited: