» »

[Java] FileFilter vprasanje

[Java] FileFilter vprasanje

alum ::

zdravo,

imam vprasanje glede vmesnika FileFilter, ki imam metodo accept z obveznim paramterom File pathname... FileFilter uporabljam v navezavi z metodo listFiles() , zato si nekako ne predstavljam, od kod se prenese parameter pathname...

mogoce je odgovor sila enostaven, ampak imam enostavno blokado;)

lp

kopernik ::

Parameter ti že dobiš v metodo accept. Vse kar moraš narediti je to, da v metodi accept poveš ali je parameter file sprejemljiv ali ne (vrneš true ali false). Ta metoda se potem kliče v metodi File.listFiles(FileFilter filter), kjer je poskrbljeno za pošiljanje parametra ...

JerKoJ ::

FileFilter je abstraktni razred zato ga mores razsirt tako da dela tebi v prid.
Eto en simple razred, ki dela na koncnice datoteke

import java.io.File;
import java.util.Vector;
import javax.swing.filechooser.*;

public class CustomFileFilter extends FileFilter {  
  Vector v;

  public CustomFileFilter() {    
    v=new Vector();
  }

  public void addExtension(String ext) {
    v.add(ext.toLowerCase());
  }

  public boolean accept(File f) {
      if(f != null) {
          if(f.isDirectory()) {
              return true;
          }
          String extension = getExtension(f);
          String ext;
          for (int i=0;i<v.size();i++) {
            ext=(String) v.get(i);
            if(extension != null && extension.equals(ext)) {
              return true;
            }
          }
      }
      return false;
  }

  private String getExtension(File f) {
     if(f != null) {
         String filename = f.getName();
         int i = filename.lastIndexOf('.');
         if(i>0 && i<filename.length()-1) {
             return filename.substring(i+1).toLowerCase();
         };
     }
     return null;
  }

  public String getDescription() {
    String s=new String();
    for (int i=0;i<v.size();i++) {
      s=s.concat(" "+(String) v.get(i));
    }
    return (s.toUpperCase()+" files");
  }  

}


uporaba:
  CustumFileFilter cff=new CustomFileFilter();
  cff.addExtension("jpg");
  //dobimo FileFilter, ki "spusti" cez le *.jpg datoteke

alum ::

to pomeni, ce bi povozil metodo accept in ji dodal dva parametra (npr. se en string), bi bilo to nesmiselno, ker bi bil drugi parameter referenca na null? ne nameravam tega uporabljat, pac zanima me...

alum ::

JerKoJ...razumem, zakaj se uporablja FileFilter, ampak od kod paramteri, mi ni bilo cist jasno....

JerKoJ ::

FileFilter je abstraktnega tipa z razlogom, za narejene stvari za izbiro datotek (recimo JFileChooser mi pade na pamet) se lahko nanga sklicujejo, da vejo katere datotek so ok in katere ne. Nekje znotraj JFileChooser-ja se prebere direktorij in za vsako datoteko se klice nastavljeni FileFilter, ki z metodo accept(File) vrne true ali false, ce vrne true potem JFileChooser to datoteko prikaze drugace ne. Seveda na zacetku FileFilter ni nastavljen in JFC prikaze vse datoteke, lahko pa nardis svoj FileFilter pa ga JFC-ju nastavs. Torej neki, kar je ze narjen poskrbi, da se FileFilter prov uporab, seveda pa le v obliki bool accept(File) in v nobeni drugi.

uporaba:
JFileChooser fileChooser = new JFileChooser();
CustomFileFilter cff=new CustomFileFilter();    
cff.addExtension("jpg");
fileChooser.setFileFilter(cff); 
int ret_value=fileChooser.showOpenDialog(this);
if (ret_value==JFileChooser.APPROVE_OPTION) {
  File file=fileChooser.getSelectedFile();
  //do something
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344320509 (60512) Macketina
»

Java Objekti

Oddelek: Programiranje
102121 (1815) Mavrik
»

[JAVA] branje iz datoteke

Oddelek: Programiranje
242298 (1933) Bela01
»

JAVA neujemanje tipov

Oddelek: Programiranje
151935 (1568) l0g1t3ch
»

[JAVA] zaustavitev niti (threadov)

Oddelek: Programiranje
223064 (3064) morbo

Več podobnih tem