Search file in Java

I’d want to create a file search tool in Java that works on both Linux and Windows. I’m familiar with Windows, but I’m not familiar with Linux. This logic is being used to display all of the discs in the windows.

package test;

import java.io.File;

public class Test {
public static void main(String[] args) {
    File[] drives = File.listRoots();
    String temp = "";
    for (int i = 0; i < drives.length; i++) {
        temp += drives[i];
    }

    String[] dir = temp.split("\\\\");
    for (int i = 0; i < dir.length; i++) {
        System.out.println(dir[i]);

    }
}
}

When used in Windows, the above code displays all of the roots such as c:, d:, and so on, but when used in Linux, it just displays /. I’m also using this reasoning to find a certain file in Windows.

public void findFile(String name,File file)
{
    File[] list = file.listFiles();
    if(list!=null)
    for (File fil : list)
    {
        if (fil.isDirectory())
        {
            findFile(name,fil);
        }
        else if (name.equalsIgnoreCase(fil.getName()))
        {
            System.out.println(fil.getParentFile());
        }
    }
}

It works good, but my difficulty is figuring out how to do it in Linux; I’m new to Linux and have no idea how to do it, and I’m running out of time; any assistance would be greatly appreciated.

On Linux it only displays ‘/‘ because that is root. Everything else is under it. Windows treats each drive with its own letter. Linux has them as a “file” in /dev/ or a folder to access the content within once mounted. So you could be look for /dev/sdb1 (drive b partition 1) and it could be at /mnt/driveb or /home/user/driveb or really anywhere within the file system. So if you are trying to find something on Linux, you will have to search the entire root tree.

1 Like

oh okay
Thank you