File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

how sort a array of files and directories.. ?

 
Miguel Enriquez
Ranch Hand
Posts: 95
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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?
 
Paul Clapham
Sheriff
Pie
Posts: 20171
25
MySQL Database
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Then you need a Comparator to enforce that sequence:
 
Raed Qudaisat
Greenhorn
Posts: 7
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
Miguel Enriquez
Ranch Hand
Posts: 95
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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....
 
Miguel Enriquez
Ranch Hand
Posts: 95
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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);
 
Miguel Enriquez
Ranch Hand
Posts: 95
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic