how to read directories in java

35,072

Solution 1

You can use java IO API. Specifically java.io.File, java.io.BufferedReader, java.io.BufferedWriter etc.

Assuming by opening you mean opening file for reading. Also for good understanding of Java I/O functionalities check out this link: http://download.oracle.com/javase/tutorial/essential/io/

Check the below code.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class FileIO 
{
    public static void main(String[] args) 
    {
        File file = new File("c:/temp/");

        // Reading directory contents
        File[] files = file.listFiles();

        for (int i = 0; i < files.length; i++) {
            System.out.println(files[i]);
        }

        // Reading conetent

        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader("c:/temp/test.txt"));
            String line = null;

            while(true)
            {
                line = reader.readLine();
                if(line == null)
                    break;

                System.out.println(line);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            if(reader != null)
            {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

Solution 2

There's also the Commons IO package which has a variety of methods for manipulating files and directories.

import java.io.File;
import java.io.IOException;
import java.util.Collection;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;

public class CommonsIO 
{
    public static void main( String[] args ) 
    {
        // Read the contents of a file into a String
        try {
            String contents = FileUtils.readFileToString( new File( "/etc/mtab" ) );
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Get a Collection of files in a directory without looking in subdirectories
        Collection<File> files = FileUtils.listFiles( new File( "/home/ross/tmp" ), FileFilterUtils.trueFileFilter(), null );

        for ( File f : files ) {
            System.out.println( f.getName() );
        }
    }
}

Solution 3

You can use a class java.io.File to do that. A File is an abstract representation of file and directory pathnames. You can retrieve the list of files/directories within it using the File.list() method.

Solution 4

public class StackOverflow {

    public static void main(String[] sr) throws IOException{
        //Read a folder and files in it
        File f = new File("D:/workspace");
        if(!f.exists())
            System.out.println("No File/Dir");
        if(f.isDirectory()){// a directory!
            for(File file :f.listFiles()){
                System.out.println(file.getName());
            }
        }

        //Read a file an save content to a StringBuiilder
        File f1 = new File("D:/workspace/so.txt");
        BufferedReader br = new BufferedReader(new FileReader(f1));
        StringBuilder sb = new StringBuilder();
        String line = "";
        while((line=br.readLine())!=null)
            sb.append(line+"\n");

        System.out.println(sb);
    }
}
Share:
35,072
NoodleOfDeath
Author by

NoodleOfDeath

Send noods, preferably the kind you can eat.

Updated on May 01, 2020

Comments

  • NoodleOfDeath
    NoodleOfDeath about 4 years

    simple: how do i read the contents of a directory in Java, and save that data in an array or variable of some sort? secondly, how do i open an external file in Java?