Hello,
I'm new to Java programming and I'm working on a file to read through the Linux filesystem. Currently, I wrote a very simple program where I need to assign a drive name to a variable in order to retrieve disk space such as:
File file = new File("/u01");
This only allows me to report on the '/u01' filesystem. However, the server contains multiple filesystems such as /backups, /tmp, etc. I'd also like to report on these as well. The following works on my Windows machine but not Linux:
import java.io.File;
public class diskSpaceDetail
{
public static void main(String[] args)
{
File[] roots = File.listRoots();
for(int i = 0; i < roots.length; i++)
{
System.out.println("drive:" + roots[i]);
}
The above code returns nothing for Linux. Here is the full script that works on Linux:
import java.io.File;
public class diskSpaceDetail
{
public static void main(String[] args)
{
File file = new File("/u01");
long totalSpace = file.getTotalSpace(); //total disk space in bytes.
long usableSpace = file.getUsableSpace(); ///unallocated / free disk space in bytes.
long freeSpace = file.getFreeSpace(); //unallocated / free disk space in bytes.
double totalSpaceGB = totalSpace / 1024 / 1024 / 1024;
double usableSpaceGB = usableSpace / 1024 / 1024 / 1024;
double freeSpaceGB = freeSpace / 1024 / 1024 / 1024;
String heading1 = "Filesystem";
String heading2 = "Total Size (GB)";
String heading3 = "Usable Space (GB)";
String heading4 = "Free Space (GB)";
String divider = "--------------------------------------------------------------";
System.out.println("");
System.out.printf("%-20s %20s %20s %20s %n", heading1,heading2,heading3,heading4);
System.out.println(divider);
System.out.printf("%-20s %20s %20s %20s %n",file,totalSpaceGB,usableSpaceGB,freeSpaceGB);
}
}
Is there a way I can iterate through all of the Linux filesystems without entering a value such as "/u01"?
Thanks,
Frank