Forum Stats

  • 3,727,533 Users
  • 2,245,406 Discussions
  • 7,852,848 Comments

Discussions

Java - Read Linux Filesystem Space

frank.anellia
frank.anellia Member Posts: 104

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

Tagged:

Answers

  • frank.anellia
    frank.anellia Member Posts: 104
    edited November 2017

    Basically, what I'm trying to do is to report on 2 filesystems:  /u01 and /backups.  I was hoping to create an array and loop through those files to report on sizes.  Eventually the program will be appended with more code to report percentages and email users.

    I tried declaring File an array but received an error:

    diskSpaceDetail.java:7: error: incompatible types: File cannot be converted to File[]

            File[] file = new File("/u01");

    Any ideas?

This discussion has been closed.