How to use "ls *.c" command in java?

Querier picture Querier · Mar 24, 2013 · Viewed 18.9k times · Source

I am trying to print "*.C" files in java

I use the below code

public static void getFileList(){
    try
    {
        String lscmd = "ls *.c";
        Process p=Runtime.getRuntime().exec(lscmd);
        p.waitFor();
        BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line=reader.readLine();
        while(line!=null)
        {
            System.out.println(line);
            line=reader.readLine();
        }
    }
    catch(IOException e1) {
        System.out.println("Pblm found1.");
    }
    catch(InterruptedException e2) {
        System.out.println("Pblm found2.");
    }

    System.out.println("finished.");
}

P.S:- It is working fine for "ls" command.when I am using "*" in any command, all aren't work. need the replacement of "*" in the command in java.

UPDATE

Thanks for your help guys.

Now i need the same result for the comment " ls -d1 $PWD/** "in java. it will list all the directory names with the full path.

Thanks for your time.

Answer

VGR picture VGR · Mar 24, 2013

You might find this more reliable:

Path dir = Paths.get("/path/to/directory");

try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.c")) {
    for (Path file : stream) {
        // Do stuff with file
    }
}