Avatar billede ng-km Nybegynder
02. august 2009 - 17:11 Der er 2 kommentarer

Langsomt filtræ

Jeg har lavet en visning af et filtræ (á-la JFileChooser) med en rekursiv metode, og det virker fint, bortset fra at det er ekstremt langsom når jeg sætter den til at vise et træ via min VPN-forbindelse til en anden server. Forbindelsen er måske ikke den hurtigste, 2Mbit op/ned, men det undrer mig at Java´s JFileChooser kan indlæse hele træet på et splitsekund. Derfor må det jo være min metode det er galt med. Er der nogen der har et forslag til hvordan jeg kan "kopiere" JFileChooser´s indlæsningsmetode eller bare nærme mig den. På min lokale PC fungerer min metode acceptabelt. Den viser et træ med 60000 filer på ca.3 sek, hvilket naturligvis også er forholdsvis langsomt ift. JFileChooser.

Kan I give mig mere fart på?

.......
.......
private DefaultMutableTreeNode top;
private DefaultTreeModel treeModel;
.......

public void indlaesDestination(File nyDestinationsMappe)
{
        top.removeAllChildren();
    top.setUserObject(stiNavne.getTilFile().getAbsolutePath());
        //her sker indlæsningen.
    createNodes(top, stiNavne.getTilFile());

    treeModel.reload(top);
    .......
    .......

}



private void createNodes(DefaultMutableTreeNode CNtop, File topfil)
{
    File [] fileArray = topfil.listFiles();
      try
      {
          if(fileArray != null)
          {
              for ( int i=0; i < fileArray.length; i++ )
              {
                  if(fileArray[i].isDirectory())
                  {
                      File tempFil = fileArray[i];
                      DefaultMutableTreeNode tempNode = new DefaultMutableTreeNode(new MyNode(tempFil));
                      CNtop.add(tempNode);
                      createNodes(tempNode, tempFil);
                  }//if
                }//for
      }//if
      }//try
    catch(SecurityException se)
        {System.out.println("Error -- " + se);}
    }//createNodes
Avatar billede arne_v Ekspert
02. august 2009 - 19:08 #1
Hvis jeg skulle gætte så indlæser JFileChooser ikke hele træet først inden det viser noget men bruger en lazy teknik, hvor den kun læser som der er behov for det.

En teknok som jeg tror at du med fordel kunne efterligne. Det tager tid at scanne en disk for 60000 filer. Og over et langsomt WAN duer det bare ikke.
Avatar billede arne_v Ekspert
13. september 2009 - 03:44 #2
kommet videre ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester