• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

how sort a array of files and directories.. ?

 
Ranch Hand
Posts: 95
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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?
 
Marshal
Posts: 28177
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Then you need a Comparator to enforce that sequence:
 
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic