Forums Register Login

how sort a array of files and directories.. ?

+Pie Number of slices to send: Send
import java.util.*;
.
.
.
.
File[] filesInDir = directory.listFiles();
Arrays.sort(filesInDir);


but not work... for me, i need all directories, first... and then the files or viceverza... no problem, here the results (not like me):


Dir Name:C:\Documents and Settings\Miguel Enriquez\Favorites\assembler
Nombre Favorito: Art of Assembly Language Programming and HLA by Randall Hyde

Dir Name:C:\Documents and Settings\Miguel Enriquez\Favorites\assembler
Nombre Favorito: Art of Assembly Language Programming and HLA by Randall Hyde2

Dir Name:C:\Documents and Settings\Miguel Enriquez\Favorites
Nombre Favorito: Batanga - Latin Music Internet Radio

Dir Name:C:\Documents and Settings\Miguel Enriquez\Favorites\Becas
Nombre Favorito: CONACYT- Convocatoria de Demanda Libre 2004 - DAFCyT

see Batanga.... because Batanga are first than Becas.... but i want list
sorted, first the directries, and then my files....

any advice?
+Pie Number of slices to send: Send
Then you need a Comparator to enforce that sequence:
+Pie Number of slices to send: Send
use filters ,,,
************
File dir=new File(File_Path+File_Name);
File[] list;
FileFilter filter=new FileFilter(){
public boolean accept(File file) {
return file.isDirectory();
}
};

list=dir.listFiles(filter);
************
this will get you all directories,,,,

replace "return file.isDirectory();" with "return file.isFile();" to list the files instead
+Pie Number of slices to send: Send
Paul i try compile my program with the comparator and get these error:

C:\programa\java\Mysql>javac listfi.java
listfi.java:84: cannot find symbol
symbol : method compareTo(java.lang.Object)
location: class java.lang.Object
return o1.compareTo(o2);
^
Note: listfi.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error


thanks....
+Pie Number of slices to send: Send
i modified the comparator: (worked!!!)
NOTE: display first the directoryes and then the files, how sort in inverse mode? first files and then directories?

thanks

Comparator comp = new Comparator()
{
public int compare(Object o1, Object o2)
{
File f1 = (File) o1;
File f2 = (File) o2;
if (f1.isDirectory() && !f2.isDirectory())
{
// Directory before non-directory
return -1;
}
else if (!f1.isDirectory() && f2.isDirectory())
{
// Non-directory after directory
return 1;
}
else
{
// Alphabetic order otherwise
//return o1.compareTo(o2);
return f1.compareTo(f2);
}
}
};
Arrays.sort(filesInDir, comp);
+Pie Number of slices to send: Send
i changed

if (f1.isDirectory() && !f2.isDirectory())
{
// Directory before non-directory
return 1;
}
else if (!f1.isDirectory() && f2.isDirectory())
{
// Non-directory after directory
return -1;
}


for first sort the filenames and then directories.

Thanks...
much thanks
You had your fun. Now it's time to go to jail. Thanks for your help tiny ad.
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 14264 times.
Similar Threads
i Explain more....
Mysql JDBC Cant load.....
Systems level difference between osx linux and unix
Who came First?....Compiler Or Language?
how sort a array of files and directories.. ?
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 19, 2024 00:39:03.