
import java.util.List;
import java.util.ArrayList;
import java.io.File;
import java.util.Date;

class MoreRecursion
{

    public static void listFiles( String dirName )
    {
        File dinfo = new File( dirName );
        List<String> directories = new ArrayList<String>( );

        if( !dinfo.isDirectory( ) )
            throw new IllegalArgumentException( dirName + " not a directory ");

        System.out.println( );
        System.out.println( "Directory " + dirName );

        for( String fn : dinfo.list( ) )
        {
            String completeName = dirName + File.separatorChar + fn;

            File thisInfo = new File( completeName );

            System.out.print( new Date( thisInfo.lastModified( ) ) + "\t" );

            if( thisInfo.isDirectory( ) )
            {
                directories.add( completeName );
                System.out.print( " <DIR> " );
            }
            else
                System.out.print( "       " );

            System.out.print( String.format( "%1$10d", thisInfo.length( ) ) );

            System.out.print( " " + fn );

            System.out.println( );
        }
        for( String dir : directories )
            listFiles( dir );
    }

    public static void main( String [ ] args )
    {
        listFiles( "." );
    }
}

