package main.commands.dir; import java.io.*; import java.util.*; import java.util.regex.Pattern; import main.console.managecomands.AbstractCommand; import main.console.IOStream.IODataStreamInreface; import main.console.IOStream.JavaConsole; public class Dir extends AbstractCommand { // Arg given on the command line private String parameters[]; // The directory we are in; private File pwd; public Dir(){ super("dir"); } public static void main( String args[] ){ Dir d = new Dir(); d.displayContentDir(new JavaConsole(), args ); } public void displayContentDir(IODataStreamInreface iostream,String [] args){ this.parameters = args; String currdir = System.getProperty("vconsole.currentDirectory","/"); pwd = new File(currdir); String [] list; if(args.length==0){ list = pwd.list(); }else{ //list = pwd.list(new DirFilter(args[0])); final String regExp = ""; list = pwd.list(new FilenameFilter() { private Pattern pattern = Pattern.compile(regExp); public boolean accept(File dir, String name) { return pattern.matcher(new File(name).getName()).matches(); } }); } Arrays.sort(list, new AlphabeticComparator()); for (String str : list) { String [] drwx = {"-","-","-","-"}; File f = new File(currdir+File.separator+str); if(f.isDirectory()) drwx[0] = "d"; if(f.canRead()) drwx[1] = "r"; if(f.canWrite()) drwx[2] = "w"; if(f.canExecute()) drwx[3] = "x"; //iostream.printf(f.getPath()); iostream.printf("%s%s%s%s ",(Object [])drwx); iostream.println(str); } } public void exec(IODataStreamInreface c, String[] params) throws Exception { displayContentDir(c, params); } public class AlphabeticComparator implements Comparator{ public int compare(Object o1, Object o2) { String s1 = (String)o1; String s2 = (String)o2; return s1.toLowerCase().compareTo( s2.toLowerCase()); } } }