• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 337
  • Last Modified:

Using java.io.FilenameFilter

I would like to know how to use java.io.FilenameFilter with a FileDialog class.  I only want my FileDialog class to accept files of type .exe.  How do I do this?
0
bjg
Asked:
bjg
1 Solution
 
bjgAuthor Commented:
Also how do I tell it to start in the Windows directory?
0
 
imladrisCommented:
A filename filter looks something like this:

class exeFilt implements FilenameFilter
{      public boolean accept(File dir,String nm)
      {      return(nm.endsWith(".exe"));
      }
}

You attach it to the FileDialog with the setFilter method:

FileDialog fd=new FileDialog.....
fd.setFilenameFilter(new exeFilt());


0
 
imladrisCommented:
And as to the second question, FileDialog provides:

    public void setDirectory(String dir) {

which you would give the relevant argument (e.g. "c:\\windows")


0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
bjgAuthor Commented:
1)  I have tried the exact code you have here for using FilenameFilter and when I run my app I get the following System.out.println:  setFilenameFilter not implemented

2)  I have tried setDirectory("C:\\Windows") and it still defaults to the current directory which I am running the app from.

What is wrong with these two things?
0
 
bjgAuthor Commented:
I got setDirectory to work and I used setFile("*.exe") to only allow me to accept files of type .exe in the FileDialog.  I still do not know what is wrong with the FilenameFilter.
0
 
imladrisCommented:
Can't imagine either. If you have the source you can see it right in the FileDialog class, so it should not be able to come up with that particular error. It would not imply that there is anything wrong with the filter. "setFilenameFilter not implemented" hints more at something like a misspelling, miscapitalization of the method or the class. Though, obviously, everything looks fine in your comments here.
0
 
cuCommented:
Here is a codelet that implements FilenameFilter and it works:

public class extFilter implements FilenameFilter
{
  private String ext;
  private boolean acceptDir = true;

  public extFilter(String extension){
    this.ext = ext;
  }

  public extFilter(String ext, boolean acceptDir){
    this.ext = ext;
    this.acceptDir = acceptDir;
  }

  public boolean accept(File dir, String name)
  {
    if (name.endsWith(ext))
      return true;
    else
      return ((acceptDir) && (new File(dir,name)).isDirectory());
  }
}

0
 
bjgAuthor Commented:
this is the code that I have and it didn't work:

class MyFilenameFilter implements FilenameFilter {
    public boolean accept(File dir,String name) {
        return(name.endsWith(".exe"));
    }
}

Should this work if I only want the FileDialog to show and allow files of type .exe?
0
 
russgoldCommented:
Try this:

class MyFilenameFilter implements FilenameFilter {
    public boolean accept(File dir,String name) {
        return(name.toUpperCase().endsWith(".EXE"));
        }
    }

Note that Windows is case-insensitive, and by default its 8.3 names are returned in upper case.  You need to convert everything to a single case to be certain of finding them.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Tackle projects and never again get stuck behind a technical roadblock.
Join Now