Remote JFileChooser

Hi all,
I think this topic could be of common interest. I try to implement a remote JFileChooser with RMI.
I created a MyFileSystemView class on the client that extends FileSystemView and I also overwrote all methods, so that they delegate each call to a RemoteObject on the Server. This RemoteObject uses the class methods of:
- return FileSystemView.getFileSystemView().getHomeDirectory(); and returns a file.
Everything works fine when I run it on the same maschine, but If I separate it on a client and server I only get plain files(no directories) and I can not navigate at all.
My question is:
- Is it necessary to also implement the parameter File as an RemoteObject, like RemoteFile or just to implement a RemoteObject like RemoteFileView?
- another question is: I wrote some comments about some of the people are passing the whole JFileChooser from the Server to the client. Is it not sufficient to only exchange the FileSystemView class and the the FileView class?
Thanks for your time and effort!
best regards,
Gekko

I have written the following code in RemoteFileSystemView class (referred in the thread mentioned above).
public static void main(String args[])
          try {
          RemoteFileSystemView fsv = new RemoteFileSystemView(args[0]);
          JFileChooser fc;
          fc = new JFileChooser(new File("."), fsv);
          fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
          int status = fc.showDialog(null,"Select File");
          if (status == JFileChooser.APPROVE_OPTION)
               System.out.println(fc.getSelectedFile().getPath());
          catch(Exception e)
               System.out.println("Exception:"+e.getMessage());
               e.printStackTrace();
     }It is giving me the following errors:
Feb 24, 2013 8:28:25 PM RemoteFileSystemView getHomeDirectory
SEVERE: getHomeDirectory()
java.rmi.NoSuchObjectException: no such object in table
I suppose RemoteFileSystemView is the clientside program and RemoteFileSystemServer and RemoteFileSystem are on the serverside. I do not know how to specify the current directory path in the JFileChooser constructor. Could someone guide me? And client is not supposed to know the exact path to the server machine. Then how do we make the current directory to be the server's documents directory? And am I going wrong some where?

Similar Messages

  • Is there a free Remote JFileChooser?

    Hello,
    Does anybody know if there is code for a free Remote JFileChooser?
    (that would be of great help and save the effort of reinventing the wheel)
    thanks,
    Anil

    The problem is not in JFileChooser. That all stays
    the same. What you want is a FileSystemView of some
    remote location. I don't know that there is a
    freeware or shareware version of such a thing
    principally because it's not a well defined problem:
    There are lots of ways + protocols you could
    potentially query another computer for info about its
    FS. In short, you probably have to do this yourselfThanks for replying. Apparently the only solutions I have seen involve installing server-side stuff. (not good)
    http://www.fishcroft.ca
    The user needs to Remote Save (via ftp) files to a unix box. Also I shall be using Webstart to run the application, so simply using JFileChooser wont do. If I code a solution, I shall post it here.
    thanks,
    Anil

  • Can not sort the files in JFileChooser if the files are from remote machine

    Hi All,
    Let me set the context of the question.
    I have extended the JFileChooser to support the listing/view of files.dirs etc of remote location through CORBA.To achieve that i have customized
    my FileSystemView to support it. In general ,the current JFileChooser sorts the file when we have details view .My question is related to this.The default
    JFileChooser has the support for sorting but when i customized the FileSystemView,the sorting functionality is no more exist.I tried with TableRowSorter as well but
    the sorting can be achieved in View only,the model still remains same as initial.
    Any pointer towards this will be highly appreciated.
    Thanks
    Praveen

    Can anyone help me out to solve this problem or any suggestion regarding this ?
    Regards
    Praveen

  • JFileChooser and remote filesystems

    I want to add(among local file system) a few remote filesystems to JFileChooser ,
    I implemented FileSytestemVIew(FileSystem) and File(RemoteFile) class.
    At the first glance everything looks ok - i can see local folders and remote root folder(in combo box), when i choose remote root i can see remote folders and files, but when i invoke double click to enter remote folders, exception occurs.
    for some reason JFileChooser sees 'ordinary' File - not my RemoteFile, and it treats it as a file (not folder) and wants to open it (approveSelection fires)
    Probably i did not implemented all the methods that are used ..
    Any ideas ? maybe there are some other ways to explore remote filesystems ?
    package pl.edu.pw.browser;
    import javax.swing.filechooser.FileSystemView;
    import java.io.File;
    import java.io.IOException;
    import pl.edu.pw.fileserver.client.Client;
    import java.util.*;
    import javax.swing.Icon;
    public class FileSystem extends FileSystemView {
    public FileSystem(ArrayList servers) {
    this.servers=servers;
    public File createFileObject(File dir, String filename) {
    System.out.println("createFileObject1");
    if (dir instanceof RemoteFile )
    return new RemoteFile(((RemoteFile)dir).getFtp(),dir.getAbsolutePath(), filename);
    return super.createFileObject(dir,filename);
    public boolean isDrive(File dir)
    if (dir instanceof RemoteFile )
    return false;
    return super.isDrive(dir);
    public boolean isFloppyDrive(File dir)
    if (dir instanceof RemoteFile )
    return false;
    return super.isFloppyDrive(dir);
    public boolean isComputerNode(File dir)
    if (dir instanceof RemoteFile)
    if(servers.contains(dir))
    return true;
    else
    return false;
    return super.isComputerNode(dir);
    public File createFileObject(String path) {
    return null;
    public boolean isFileSystem(File f) {
    System.out.println("isFileSystem");
    if (f instanceof RemoteFile) {
    return false;
    } else
    return super.isFileSystem(f);
    public boolean isFileSystemRoot(File dir)
    System.out.println("isFileSystemRoot");
    if (dir instanceof RemoteFile)
    if(servers.contains(dir))
    return true;
    else
    return false;
    return super.isFileSystemRoot(dir);
    public boolean isRoot(File f) {
    System.out.println("isRoot");
    if (f instanceof RemoteFile )
    if(servers.contains(f))
    return true;
    else
    return false;
    return super.isRoot(f);
    public String getSystemTypeDescription(File f)
    if (f instanceof RemoteFile)
    return f.getName();
    return super.getSystemTypeDescription(f);
    public Icon getSystemIcon(File f)
    return super.getSystemIcon(f);
    public boolean isParent(File folder,
    File file)
    if (folder instanceof RemoteFile && file instanceof RemoteFile )
    System.out.println("isParent("+folder.getAbsolutePath()+")("+file.getAbsolutePath()+")");
    if(file.getParent().equals(folder.getAbsolutePath()))
    System.out.println("is");
    return true;
    else
    return false;
    return super.isParent(folder,file);
    public File getChild(File parent,
    String fileName)
    System.out.println("getChild");
    if (parent instanceof RemoteFile )
    return new RemoteFile(((RemoteFile)parent).getFtp(),parent.getAbsolutePath(),fileName);
    return super.getChild(parent,fileName);
    public File createNewFolder(File containingDir)
    throws IOException {
    System.out.println("createNewFolder");
    if (containingDir instanceof RemoteFile )
    return null;
    return new File(containingDir,"/nowyFolder");
    public String getSystemDisplayName(File f)
    if (f instanceof RemoteFile )
    return f.getName();
    else
    return super.getSystemDisplayName(f);
    public File[] getRoots()
    System.out.println("getRoots");
    File[] files = super.getRoots();
    File[] fileAll = new File[files.length+1];
    int i=0;
    for(i=0;i<files.length;i++)
    fileAll=files[i];
    fileAll[i]=createFileSystemRoot((RemoteFile)servers.get(0));
    return fileAll;
    public boolean isHiddenFile(File f) {
    return f.isHidden();
    public File getParentDirectory(File dir) {
    System.out.println("getParentDirectory");
    if (dir instanceof RemoteFile)
    String p = dir.getParent();
    if(p!=null)
    return new RemoteFile(((RemoteFile)dir).getFtp(),p);
    else
    return null;
    else
    return super.getParentDirectory(dir);
    protected File createFileSystemRoot(File f)
    System.out.println("createFileSystemRoot");
    if (f instanceof RemoteFile)
    return new FileSystemRoot( (RemoteFile) f);
    else
    return super.createFileSystemRoot(f);
    static class FileSystemRoot extends RemoteFile {
    public FileSystemRoot(RemoteFile f) {
    super(f.getFtp(),f.getAbsolutePath());
    public File[] getFiles(File dir, boolean useFileHiding) {
    if (dir instanceof RemoteFile)
    RemoteFile[] files = (RemoteFile[])( (RemoteFile) dir).listFiles();
    return files;
    else
    return dir.listFiles();
    public File getHomeDirectory() {
    return super.getHomeDirectory();
    ArrayList servers = null;
    package pl.edu.pw.browser;
    import java.io.File;
    import java.io.FilenameFilter;
    import java.io.FileFilter;
    import pl.edu.pw.fileserver.client.Client;
    import java.util.*;
    import java.text.*;
    import pl.edu.pw.fileserver.Constants;
    public class RemoteFile extends File {
    final static char PATHDELIMS = '/';
    public final static String absoluteStart = "//";
    public RemoteFile(Client ftp, String parent) {
    super(parent);
    this.ftp = ftp;
    path = parent;
    public RemoteFile(Client ftp, String parent, String name) {
    this(ftp, parent);
    if (path.length()>0 && path.charAt(path.length()-1) == PATHDELIMS)
    path += name;
    else
    path += PATHDELIMS + name;
    public boolean equals(Object obj) {
    if (!checked)
    exists();
    return path.equals(obj.toString());
    public boolean isDirectory() {
    if (!checked)
    exists();
    return isdirectory;
    public boolean isFile() {
    if (!checked)
    exists();
    return isfile;
    public boolean isAbsolute() {
    if (!checked)
    exists();
    return path.length() > 0 && path.startsWith(this.absoluteStart);
    public boolean isHidden() {
    if (!checked)
    exists();
    return ishidden;
    public long lastModified() {
    return modified;
    public long length() {
    return length;
    public String[] list() {
    return list(null);
    public String[] list(FilenameFilter filter) {
    System.out.println("list");
    String[] result = null;
    try{
    ArrayList names = (ArrayList)ftp.dir(this.getAbsolutePath());
    ArrayList files = new ArrayList();
    for(int i=0;i<names.size();i++)
    RemoteFile rf = new RemoteFile(ftp,(String)names.get(i));
    if (filter == null || filter.accept(this,rf.getName()))
    files.add(rf.getName());
    result = new String[files.size()];
    files.toArray(result);
    catch(Exception ex)
    ex.printStackTrace();
    return result;
    public File[] listFiles() {
    FileFilter filter = null;
    return listFiles(filter);
    public File[] listFiles(FileFilter filter) {
    System.out.println("listFiles");
    RemoteFile[] result = null;
    try{
    ArrayList names = (ArrayList)ftp.dir(this.getAbsolutePath());
    ArrayList files = new ArrayList();
    for(int i=0;i<names.size();i++)
    RemoteFile rf = new RemoteFile(ftp,(String)names.get(i));
    rf.exists();
    if (filter == null || filter.accept(rf))
    files.add(rf);
    result = new RemoteFile[files.size()];
    System.out.println("listFiles.size="+files.size());
    files.toArray(result);
    catch(Exception ex)
    ex.printStackTrace();
    return result;
    public String getPath() {
    return path;
    public String getCanonicalPath() {
    return getAbsolutePath();
    public String getAbsolutePath() {
    if (!isAbsolute()) {
    return ftp.pwd();
    return path;
    public String getName() {
    String result=path;
    if(result.charAt(result.length()-1) == this.PATHDELIMS)
    result = result.substring(0,result.length()-1);
    int i = result.lastIndexOf(this.PATHDELIMS);
    if(i!=-1)
    result = result.substring(i+1);
    return result;
    public String getParent() {
    String result=path;
    if(result.charAt(result.length()-1) == this.PATHDELIMS)
    result = result.substring(0,result.length()-1);
    int i = result.lastIndexOf(this.PATHDELIMS);
    if(i<3)
    return null;
    result = result.substring(0,i);
    return result;
    public boolean exists() {
    boolean ok = false;
    try {
    String r = ftp.exists(path);
    if(r != null)
    System.out.println("('"+path+"')header:"+r);
    ok = true;
    StringTokenizer st = new StringTokenizer(r,Constants.HEADER_SEPARATOR);
    String answer = st.nextToken();
    if(answer.equals(Constants.TRUE))
    isfile=true;
    isdirectory=false;
    answer = st.nextToken();
    if(answer.equals(Constants.TRUE))
    canread = true;
    answer = st.nextToken();
    if(answer.equals(Constants.TRUE))
    canwrite = true;
    answer = st.nextToken();
    if(answer.equals(Constants.TRUE))
    ishidden = true;
    answer = st.nextToken();
    length = Long.parseLong(answer);
    if(isfile)
    answer = st.nextToken();
    modified = Long.parseLong(answer);
    checked = true;
    catch (Exception ex) {
    ex.printStackTrace();
    return ok;
    public boolean canRead() {
    return canread;
    public boolean canWrite() {
    return canwrite;
    public int hashCode() {
    return path.hashCode() ^ 098123;
    public boolean mkdir() {
    return false;
    public boolean renameTo(File dest) {
    return false;
    public Client getFtp() {
    return ftp;
    private Client ftp;
    private boolean checked = false;
    private boolean isdirectory = true;
    private boolean isfile = false;
    private boolean ishidden = false;
    private boolean canread = false;
    private boolean canwrite = false;
    private String path;
    private long length = 0;
    private long modified =0;
    java.lang.NullPointerException
         at pl.edu.pw.browser.Browser.openLocalFile(Browser.java:136)
         at pl.edu.pw.browser.component.FileChooser.approveSelection(FileChooser.java:31)
         at javax.swing.plaf.basic.BasicFileChooserUI$DoubleClickListener.mouseClicked(BasicFileChooserUI.java:412)
         at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:208)
         at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:207)
         at java.awt.Component.processMouseEvent(Component.java:5137)
         at java.awt.Component.processEvent(Component.java:4931)
         at java.awt.Container.processEvent(Container.java:1566)
         at java.awt.Component.dispatchEventImpl(Component.java:3639)
         at java.awt.Container.dispatchEventImpl(Container.java:1623)
         at java.awt.Component.dispatchEvent(Component.java:3480)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3174)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
         at java.awt.Container.dispatchEventImpl(Container.java:1609)
         at java.awt.Window.dispatchEventImpl(Window.java:1590)
         at java.awt.Component.dispatchEvent(Component.java:3480)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)

    i solve the problem .
    I did not overwrite File.getConicalFile() , this method is invoked at javax.swing.plaf.basic.BasicFileChooserUI$DoubleClickListener.mouseClicked(BasicFileChooserUI.java:412)
    that is why i recived a new object type File when I was waiting for RemoteFile

  • RMI -How to use JFileChooser to see remote computer FileSystem

    i hav made a program in RMI which uses JFileChooser to show remote-machine File System. i have made my own FileSyatemView class (MyFileSyatemViewClient which extends FileSystemView) and override all the methods of FileSystemView Except getFileSystemView.
    Similarly i have made my own FileView(MyFileViewClient).
    i fed these to the JFileChooser. And object of JFileChooser i am recieving from the server through remote method getFileChooser(). Thus the code is like:
                             MyFileSystemViewClient mfsvc; //Defined Globally
                             MyFileViewClient mfvc; //Defined Globally
    public void actionPerformed(ActionEvent ae)
    if(ae.getActionCommand().equals("Open"))
                             mfsvc = new MyFileSystemViewClient();
                             mfvc = new MyFileViewClient();
    try
    JFileChooser jfc=fi.getFileChooser();
    // "fi" is the FileInterface through which we access server-side methods.
                                  jfc.setFileSystemView(mfsvc);
                                  jfc.setFileView(mfvc);                              
                                  int retval = jfc.showOpenDialog(null);
                                  if(retval==JFileChooser.APPROVE_OPTION)
                                       getf = jfc.getSelectedFile();
                             catch(Exception e)
                                  System.out.println("Error Occurred In OPEN :"+e);
    MyFileSystemViewClient class looks as :
    public class MyFileSystemViewClient extends FileSystemView
                   public MyFileSystemViewClient()
                        //super();
                        try{
                        fi.invokeMyFileSystemViewCons();
                        }catch(Exception e){
                             System.out.println("Error in invokeMyFileSystemViewCons : "+e);
                   public File[] getFiles(File file,boolean tr)
                        try{
                        return fi.getFiles(file,tr);
                        }catch(Exception e){
                             System.out.println("Error in getFiles : "+e);
                             return null;}
                   public File getHomeDirectory()
                        try{
                        return fi.getHomeDirectory();
                        }catch(Exception e){
                             System.out.println("Error in getHomeDirectory : "+e);
                             return null;}
                   public File getParentDirectory(File dir)
                        try{
                        return fi.getParentDirectory(dir);
                        }catch(Exception e){
                             System.out.println("Error in getParentDirectory : "+e);
                             return null;}
                   public File[] getRoots()
                        try{                         
                        return fi.getRoots();                    
                        }catch(Exception e){
                             System.out.println("Error in getRoots : "+e);
                             return null;}
                   public File getDefaultDirectory()
                        try{
                        return fi.getDefaultDirectory();
                        }catch(Exception e){
                             System.out.println("Error in getDefaultDirectory : "+e);
                             return null;}
                   public File createNewFolder(File containingDir)
                        try{
                        return fi.createNewFolder(containingDir);
                        }catch(Exception e){
                             System.out.println("Error in createNewFolder : "+e);
                             return null;}
                   public String getSystemDisplayName(File f)
                        try{
                        return fi.getSystemDisplayName(f);
                        }catch(Exception e){
                             System.out.println("Error in getSystemDisplayName : "+e);
                             return null;}
                   public String getSystemTypeDescription(File f)
                        try{
                        return fi.getSystemTypeDescription(f);
                        }catch(Exception e){
                             System.out.println("Error in getSystemTypeDescription : "+e);
                             return null;}
                   public File getChild(File parent, String fileName)
                        try{
                        System.out.println("Child FIle : "+fi.getChild(parent,fileName));
                        return fi.getChild(parent,fileName);
                        }catch(Exception e){
                             System.out.println("Error in getChild : "+e);
                             return null;}
                   public boolean isParent(File folder,File file)
                        try
                             return fi.isParent(folder,file);
                        catch(Exception e)
                        System.out.println("Error in isParent : "+e);
                             return false;     
                   public Icon getSystemIcon(File f)
                        try{
                        return fi.getSystemIcon(f);
                        catch(Exception e)
                        System.out.println("Error in getSystemIcon : "+e);
                             return null;     
                   public boolean isDrive(File dir)
                        try{
                        return fi.isDrive(dir);
                        catch(Exception e)
                        System.out.println("Error in isDrive : "+e);
                             return false;     
                   public boolean isFileSystem(File f)
                        try{
                        return fi.isFileSystem(f);
                        catch(Exception e)
                        System.out.println("Error in isFileSystem : "+e);
                             return false;     
                   public boolean isFileSystemRoot(File dir)
                        try{
                        return fi.isFileSystemRoot(dir);
                        catch(Exception e)
                        System.out.println("Error in isFileSystemRoot : "+e);
                             return false;     
                   public boolean isFloppyDrive(File dir)
                        try{
                        return fi.isFloppyDrive(dir);
                        catch(Exception e)
                        System.out.println("Error in isFloppyDrive : "+e);
                             return false;     
                   public boolean isRoot(File f)
                        try{
                        return fi.isRoot(f);
                        catch(Exception e)
                        System.out.println("Error in isRoot : "+e);
                             return false;     
                   public Boolean isTraversable(File f)
                        try{
                        return fi.isTraversable(f);
                        catch(Exception e)
                        System.out.println("Error in isTraversable : "+e);
                             return null;     
    //.....................................................End of the MyFileSystemViewClient.......................
    Thus each method in the class MyFileViewClient brings the required information from the server. BUT we are getting two problems:
    1) so many folders at the server-side are shown as files in the dialogbox.
    2)dialog box shows all "folders of the desktop" of the local filesystem and some more "local drives without any name". when i click a folder in the dialog box which is on my local machine, nothing happens. they are just the icon with the name but don't show the content. although i can easily see the drives of the remote filesystem and browse through except for the problem stated above at no.1.
    ok guys now its your turn to speak up.....
    plz give some suggestions and comments..
    ciao!!

    sry to all friends there who can't read the code clearly. as per the suggestion i am putting the code afresh..
    the main client class which binds to the server contains following piece of code :
    MyFileSystemViewClient mfsvc; //Defined Globally
    MyFileViewClient mfvc; //Defined Globally
    public void actionPerformed(ActionEvent ae)
         if(ae.getActionCommand().equals("Open"))
              mfsvc = new MyFileSystemViewClient();
              mfvc = new MyFileViewClient();
              try
                   JFileChooser jfc=fi.getFileChooser();//Requesting JFileChooser object from server.
                   // "fi" is the FileInterface through which we access server-side methods.
                   jfc.setFileSystemView(mfsvc);
                   jfc.setFileView(mfvc);
                   int retval = jfc.showOpenDialog(null);
                   if(retval==JFileChooser.APPROVE_OPTION)
                   getf = jfc.getSelectedFile();
              catch(Exception e)
              System.out.println("Error Occurred In OPEN :"+e);
    }i again like to convey that, "fi" is the FileInterface through which we access server-side methods.
    MyFileSystemViewClient class looks as :
    public class MyFileSystemViewClient extends FileSystemView
                   public MyFileSystemViewClient()
                        //super();
                        try{
                        fi.invokeMyFileSystemViewCons();
                        }catch(Exception e){
                             System.out.println("Error in invokeMyFileSystemViewCons : "+e);
                   public File[] getFiles(File file,boolean tr)
                        try{
                        return fi.getFiles(file,tr);
                        }catch(Exception e){
                             System.out.println("Error in getFiles : "+e);
                             return null;}
                   public File getHomeDirectory()
                        try{
                        return fi.getHomeDirectory();
                        }catch(Exception e){
                             System.out.println("Error in getHomeDirectory : "+e);
                             return null;}
                   public File getParentDirectory(File dir)
                        try{
                        return fi.getParentDirectory(dir);
                        }catch(Exception e){
                             System.out.println("Error in getParentDirectory : "+e);
                             return null;}
                   public File[] getRoots()
                        try{                         
                        return fi.getRoots();                    
                        }catch(Exception e){
                             System.out.println("Error in getRoots : "+e);
                             return null;}
                   public File getDefaultDirectory()
                        try{
                        return fi.getDefaultDirectory();
                        }catch(Exception e){
                             System.out.println("Error in getDefaultDirectory : "+e);
                             return null;}
                   public File createNewFolder(File containingDir)
                        try{
                        return fi.createNewFolder(containingDir);
                        }catch(Exception e){
                             System.out.println("Error in createNewFolder : "+e);
                             return null;}
                   public String getSystemDisplayName(File f)
                        try{
                        return fi.getSystemDisplayName(f);
                        }catch(Exception e){
                             System.out.println("Error in getSystemDisplayName : "+e);
                             return null;}
                   public String getSystemTypeDescription(File f)
                        try{
                        return fi.getSystemTypeDescription(f);
                        }catch(Exception e){
                             System.out.println("Error in getSystemTypeDescription : "+e);
                             return null;}
                   public File getChild(File parent, String fileName)
                        try{
                        System.out.println("Child FIle : "+fi.getChild(parent,fileName));
                        return fi.getChild(parent,fileName);
                        }catch(Exception e){
                             System.out.println("Error in getChild : "+e);
                             return null;}
                   public boolean isParent(File folder,File file)
                        try
                             return fi.isParent(folder,file);
                        catch(Exception e)
                        System.out.println("Error in isParent : "+e);
                             return false;     
                   public Icon getSystemIcon(File f)
                        try{
                        return fi.getSystemIcon(f);
                        catch(Exception e)
                        System.out.println("Error in getSystemIcon : "+e);
                             return null;     
                   public boolean isDrive(File dir)
                        try{
                        return fi.isDrive(dir);
                        catch(Exception e)
                        System.out.println("Error in isDrive : "+e);
                             return false;     
                   public boolean isFileSystem(File f)
                        try{
                        return fi.isFileSystem(f);
                        catch(Exception e)
                        System.out.println("Error in isFileSystem : "+e);
                             return false;     
                   public boolean isFileSystemRoot(File dir)
                        try{
                        return fi.isFileSystemRoot(dir);
                        catch(Exception e)
                        System.out.println("Error in isFileSystemRoot : "+e);
                             return false;     
                   public boolean isFloppyDrive(File dir)
                        try{
                        return fi.isFloppyDrive(dir);
                        catch(Exception e)
                        System.out.println("Error in isFloppyDrive : "+e);
                             return false;     
                   public boolean isRoot(File f)
                        try{
                        return fi.isRoot(f);
                        catch(Exception e)
                        System.out.println("Error in isRoot : "+e);
                             return false;     
                   public Boolean isTraversable(File f)
                        try{
                        return fi.isTraversable(f);
                        catch(Exception e)
                        System.out.println("Error in isTraversable : "+e);
                             return null;     
    //--------------------------------------------------------------------

  • Jfilechooser on remote directories

    Hi guy's I wish to create a java swing applet to use the jfilechooser to browse the directory structure of a remote server. what is the best way of going aboput doing this?
    thanks in advance
    Danny

    Back when there was only SunOS (Solaris 1 as it's known now), when my C program needed to display a directory contents, I would simply do a system call to "ls -lt" and pipe the output to a file or something that I can read. But after having taken a cursory look at the source code for the JFileChooser class in JDK1.3.1, my suggestion would not work....I do not believe the bottleneck is in JFileChooser -- it's simply the sheer size of the list that is causing the problem.
    Of course if the only thing you are using the JFileChooser for is to list the contents of that humongous directory, you can use the trick that I mention but instead of using JFileChooser, put the list in a list box that the user can do the selection from.
    :o(
    V.V.

  • Implementing a remote file system to use with JFileChooser

    Hi all
    What I want to do is create a virtual file system so that I can browse through it with JFileChooser, select a file, and then take the correct action. If anyone has something like this that they can post it'd be much appreciated. Otherwise, does anyone have any advice about creating a navigation tool for traversing a vertual file system?

    It appears that some people have indeed created some graphical FTP clients incorporating JFileChooser capabilities. The first entry on the search (and a few others) appear useful.
    http://www.google.com/search?num=100&hl=en&c2coff=1&q=java+ftp+client+jfilechooser

  • JFileChooser slow on remote large directories

    I'm having significant trouble with JFileChooser when browsing large (7000+ files) directories over a network (100 Mbit).
    When running as a stand-along applet, times average about 40 seconds for the files to show in the list. When running inside of a browser, the time jumps to over 2 minutes. Both times are unacceptable.
    The addition of FileFilter barely helps the speed.
    I've tried using both the 1.3.1 JDK and the 1.4 beta. The 1.4 beta is even slower, since everytime you click on a file, it hits the network to actually look at the file (hope they fix that...)

    Back when there was only SunOS (Solaris 1 as it's known now), when my C program needed to display a directory contents, I would simply do a system call to "ls -lt" and pipe the output to a file or something that I can read. But after having taken a cursory look at the source code for the JFileChooser class in JDK1.3.1, my suggestion would not work....I do not believe the bottleneck is in JFileChooser -- it's simply the sheer size of the list that is causing the problem.
    Of course if the only thing you are using the JFileChooser for is to list the contents of that humongous directory, you can use the trick that I mention but instead of using JFileChooser, put the list in a list box that the user can do the selection from.
    :o(
    V.V.

  • JFileChooser interpreting zip file as a folder

    I have an app that reads and writes data to zip files. When opening one, I use a JFileChooser with a file filter for zips and directories.
    This works fine except except on XP. If the zip file is on a remote (Novell) file server, the JFileChooser treats the zip file as a directory. You can't open the zip file itself.
    If the client is W2k, there is no problem.
    I'm using JRE 1.4.1.
    Anyone know if there's a tweak to XP to fix this?

    JResourceBrowser is a swing component similar to the javax.swing.JFileChooser but letting the user navigating into a set of directories bound to various protocols or containers. For an usage sample, listing an ftp directory, creating a new file and editing it inside your application. JResourceBrowser is provided by default with a set of "managers" dedicated to ZIP and JAR, FTP and WebDAV.
    http://www.swingall.com/jrb/index.html
    Features :
    * JavaBeans
    * Built with a GridBagLayout
    * Create your own plugins for navigating
    * User Interface delegate for rendering a file
    * Cutomize the set of actions
    * Default actions for creating a new file, deleting, renaming or locking/unlocking
    * Extracting or putting a file content
    * Save/restore the user interface state
    * ZIP, JAR support
    * FTP support
    * WebDAV support
    * JDK 1.4 and 1.5 compatibility

  • JFileChooser and other types of "file" systems

    Good afternoon...
    just wondering how reasonable it would be to modify JFileChooser to work with other types of file systems. such as .zip archives, remote FTPs, etc.
    any ideas where i should start?
    i even want to use this for something that doesn't contain files at all, but the analogy works perfectly.
    Schultz.

    Here's how to view remote files with ftp:
    What does FileSystemView view? http://www.crocodile.org/listok/2/WhatDoesFileSystemViewView.shtml
    Cheers
    Tue

  • View remote file system

    Hello to all.
    I have just implemented a simple client/server application which enables file transfers.
    I would like to know if there is a way of implementing a remote file viewer in which i will be able to send requests and download files. My primary concern is to be able to view the remote file system of a server on a client computer. Please note that its a two-way application i.e. part of the software is installed on the client, part of it is on the server.
    I have browsed through the forums and concluded that it is not possible to do this using a JFileChooser.
    Anyone has any ideas regarding this matter?
    Kind Regards
    Christophoros

    hi JaWarrior, thanks for your reply. I think i've read this solution somewhere else in the forums. The solution was like yours collecting the remote file system and sending it to the client. So if i got this straight i should have the server component sending lets say an array of strings with the files of the current working directory to the client?
    Also could you please provide an example on how do i go on and grab the contents of a directory?
    Many thanks to all

  • Remote Browsing using RMI

    Hi,
    Read a lot of forums about how to create a Remote file browser using RMI and JFileChooser.
    Not done any RMI coding I thought I'd give it a try. I have finally after 2 days managed to do it.
    This is an overview.
    Create a RemoteFile class that extends Remote.. eg.
    import java.rmi.*;
    import java.io.*;
    import java.net.*;
    public interface RemoteFile extends Remote {
        public boolean canRead() throws RemoteException;
        public boolean canWrite() throws RemoteException;
        public int compareTo(File pathname) throws RemoteException;etc.etc
    Then create an implementation class...
    import java.rmi.server.*;
    import java.io.*;
    import java.net.*;
    public class RemoteFileImpl extends UnicastRemoteObject implements RemoteFile {
        private File f;
        public RemoteFileImpl(File sf) throws java.rmi.RemoteException {
            f=sf;
        public boolean canRead() throws java.rmi.RemoteException {
            return f.canRead();
        }etc etc for all other File functions.
    Then we create a RemoteFileSystemView interface, again extending remote...
    public interface RemoteFileSystemView extends Remote {
        public RemoteFile createFileObject(File dir, String filename) throws RemoteException;
        public RemoteFile createFileObject(String path) throws RemoteException;blah blah
    Then An implementation class...
    import javax.swing.filechooser.*;
    import java.io.*;
    public class RemoteFileSystemViewImpl extends java.rmi.server.UnicastRemoteObject implements RemoteFileSystemView {
        int length;
        private FileSystemView fs;
        public RemoteFileSystemViewImpl() throws java.rmi.RemoteException {
            fs=FileSystemView.getFileSystemView();
        public RemoteFile createFileObject(String path) throws java.rmi.RemoteException {
            return new RemoteFileImpl(fs.createFileObject(path));
        public RemoteFile createFileObject(java.io.File dir, String filename) throws java.rmi.RemoteException {
            return new RemoteFileImpl(fs.createFileObject(dir,filename));
        //public RemoteFileImpl createFileSystemRoot(java.io.File f) throws java.rmi.RemoteException {
        //    return new RemoteFileImpl(fs.createFileSystemRoot(f));
        public RemoteFile createNewFolder(java.io.File containingDir) throws java.rmi.RemoteException {
            RemoteFile tempf;
            try{
                tempf= new RemoteFileImpl(fs.createNewFolder(containingDir));
            } catch (IOException e){System.out.println(e); tempf=null;}
            return  tempf;
        public RemoteFile getDefaultDirectory() throws java.rmi.RemoteException {
            return new RemoteFileImpl(fs.getDefaultDirectory());
        public String[] getFiles(java.io.File dir, boolean useFileHiding) throws java.rmi.RemoteException {
            String[] tempf= new String[fs.getFiles(dir,useFileHiding).length];
            int i;
            File[] f = fs.getFiles(dir,useFileHiding);
            for(i=0;i<tempf.length;i++) tempf=f[i].toString();
    return tempf;
    public RemoteFile getHomeDirectory() throws java.rmi.RemoteException {
    return new RemoteFileImpl(fs.getHomeDirectory());
    public RemoteFile getParentDirectory(java.io.File dir) throws java.rmi.RemoteException {
    return new RemoteFileImpl(fs.getParentDirectory(dir));
    public String[] getRoots() throws java.rmi.RemoteException {
    String[] tempf= new String[fs.getRoots().length];
    System.out.println("fs is-"+fs.getRoots().length);
    int i;
    File[] f = fs.getRoots();
    for(i=0;i<tempf.length;i++) {tempf[i]=f[i].toString();}
    System.out.println("Roots="+tempf[0]);
    return tempf;
    public String getSystemDisplayName(java.io.File f) throws java.rmi.RemoteException {
    return fs.getSystemDisplayName(f);
    public javax.swing.Icon getSystemIcon(java.io.File f) throws java.rmi.RemoteException {
    return fs.getSystemIcon(f);
    public String getSystemTypeDescription(java.io.File f) throws java.rmi.RemoteException {
    return fs.getSystemTypeDescription(f);
    public boolean isComputerNode(java.io.File dir) throws java.rmi.RemoteException {
    return fs.isComputerNode(dir);
    public boolean isDrive(java.io.File dir) throws java.rmi.RemoteException {
    return fs.isDrive(dir);
    public boolean isFileSystem(java.io.File f) throws java.rmi.RemoteException {
    return fs.isFileSystem(f);
    public boolean isFileSystemRoot(java.io.File dir) throws java.rmi.RemoteException {
    return fs.isFileSystemRoot(dir);
    public boolean isFloppyDrive(java.io.File dir) throws java.rmi.RemoteException {
    return fs.isFloppyDrive(dir);
    public boolean isHiddenFile(java.io.File f) throws java.rmi.RemoteException {
    return fs.isHiddenFile(f);
    public boolean isParent(java.io.File folder, java.io.File file) throws java.rmi.RemoteException {
    return fs.isParent(folder,file);
    public boolean isRoot(java.io.File f) throws java.rmi.RemoteException {
    return fs.isRoot(f);
    public Boolean isTraversable(java.io.File f) throws java.rmi.RemoteException {
    return fs.isTraversable(f);
    public RemoteFile getChild(File parent, String fileName) throws java.rmi.RemoteException {
    return new RemoteFileImpl(fs.getChild(parent,fileName));
    Notice that whenever I should be passing a File, I pass a RemoteFile instead! Also.. when I am passing a File Array, I instead pass a String array. Reason is.. I havent managed to get File arrays through RMI.. Any Help anyone?!?!?!?!
    I got round it by simply passing a String array and relying on the client to reconstruct a File array locally using the String array. Messy... perhaps.. any suggestions welcome!
    Next.. use rmic to create Stubs and Skels for the 2 implementations and write an RMI server.. eg.
    import java.rmi.Naming;
    public class RemoteServerRMI {
        /** Creates a new instance of RemoteServerRMI */
        public RemoteServerRMI() {
            try {
                RemoteFileSystemView c = new RemoteFileSystemViewImpl();
                Naming.rebind("rmi://localhost:1099/FileService", c);
            } catch (Exception e) {
                System.out.println("Trouble: " + e);
        public static void main(String[] args) {
            new RemoteServerRMI();
    }Yes.. simple and shamelessly lifted from the tutorials.
    and Finally the client....
    import javax.swing.filechooser.*;
    import java.rmi.*;
    import java.net.MalformedURLException;
    import java.io.*;
    import javax.swing.*;
    public class RemoteFileSystemViewClient extends FileSystemView {
        static RemoteFileSystemView c;
        public RemoteFileSystemViewClient() {
            try {
                c = (RemoteFileSystemView) Naming.lookup("rmi://localhost:1099/FileService");
            catch (MalformedURLException murle) {
                System.out.println();
                System.out.println(
                "MalformedURLException");
                System.out.println(murle);
            catch (RemoteException re) {
                System.out.println();
                System.out.println(
                "RemoteException");
                System.out.println(re);
            catch (NotBoundException nbe) {
                System.out.println();
                System.out.println(
                "NotBoundException");
                System.out.println(nbe);
        public File getHomeDirectory() {
            File tempf;
            try {
                tempf= new File(c.getHomeDirectory().gettoString());
            } catch (RemoteException re){System.out.println(re);tempf=null;}
            return tempf;
        public File createFileObject(File dir, String filename) {
            File tempf;
            try {
                tempf= new File(c.createFileObject(dir, filename).gettoString());
            } catch (RemoteException re){System.out.println(re);tempf=null;}
            return tempf;
        public File createFileObject(String path) {
            File tempf;
            try {
                tempf=new File(c.createFileObject(path).gettoString());
            } catch (RemoteException re){System.out.println(re);tempf=null;}
            return tempf;
        public File createNewFolder(File containingDir) throws RemoteException {
            File tempf;
            try {
                tempf=new File(c.createNewFolder(containingDir).getAbsolutePath());
            } catch (RemoteException re){System.out.println(re);tempf=null;}
            return tempf;
        public File getChild(File parent, String fileName) {
            File tempf;
            try {
                tempf=new File(c.getChild(parent,fileName).gettoString());
            } catch (RemoteException re){System.out.println(re);tempf=null;}
            return tempf;
        public File getDefaultDirectory() {
            File tempf;
            try {
                tempf=new File(c.getDefaultDirectory().gettoString());
            } catch (RemoteException re){System.out.println(re);tempf=null;}
            return tempf;
        public File[] getFiles(File dir, boolean useFileHiding) {
            File[] tempf;
            try {
                tempf=new File[c.getFiles(dir,useFileHiding).length];
                String[] rtempf=c.getFiles(dir, useFileHiding);
                int i;
                for(i=0;i<c.getFiles(dir, useFileHiding).length;i++) tempf=new File(rtempf[i]);
    } catch (RemoteException re){System.out.println(re);tempf=null;}
    return tempf;
    public File getParentDirectory(File dir) {
    File tempf;
    try {
    tempf= new File(c.getParentDirectory(dir).gettoString());
    } catch (RemoteException re){System.out.println(re);tempf=null;}
    return tempf;
    public File[] getRoots(){
    File[] tempf;
    try {
    String[] rtempf= c.getRoots();
    System.out.println("in");
    tempf=new File[rtempf.length];
    int i;
    for(i=0;i<c.getRoots().length;i++) tempf[i]=new File(rtempf[i]);
    } catch (RemoteException re){System.out.println(re);tempf=null;}
    return tempf;
    public String getSystemDisplayName(File f) {
    String tempf;
    try{
    tempf=c.getSystemDisplayName(f);
    } catch (RemoteException re){System.out.println(re);tempf=null;}
    return tempf;
    public javax.swing.Icon getSystemIcon(File f) {
    javax.swing.Icon tempf;
    try{
    tempf=c.getSystemIcon(f);
    } catch (RemoteException re){System.out.println(re);tempf=null;}
    return tempf;
    public String getSystemTypeDescription(File f) {
    String tempf;
    try {
    tempf=c.getSystemTypeDescription(f);
    } catch (RemoteException re){System.out.println(re);tempf=null;}
    return tempf;
    public boolean isComputerNode(File dir) {
    boolean tempf;
    try {
    tempf= c.isComputerNode(dir);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isDrive(File dir) {
    boolean tempf;
    try {
    tempf= c.isDrive(dir);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isFileSystem(File f) {
    boolean tempf;
    try {
    tempf= c.isFileSystem(f);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isFileSystemRoot(File dir) {
    boolean tempf;
    try {
    tempf= c.isFileSystemRoot(dir);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isFloppyDrive(File dir) {
    boolean tempf;
    try {
    tempf= c.isFloppyDrive(dir);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isHiddenFile(File f) {
    boolean tempf;
    try {
    tempf= c.isHiddenFile(f);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isParent(File folder, File file) {
    boolean tempf;
    try {
    tempf= c.isParent(folder,file);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public boolean isRoot(File f) {
    boolean tempf;
    try {
    tempf= c.isRoot(f);
    } catch (RemoteException re){System.out.println(re);tempf=false;}
    return tempf;
    public Boolean isTraversable(File f) {
    Boolean tempf;
    try {
    tempf= c.isTraversable(f);
    } catch (RemoteException re){System.out.println(re);tempf=new Boolean(false);}
    return tempf;
    public static void main(String[] args) {
    RemoteFileSystemViewClient rc = new RemoteFileSystemViewClient();
    JFileChooser fch= new JFileChooser(rc);
    fch.showOpenDialog(null);
    Notice.. the getFiles and getRoots, procedures, get String arrays from the RMI and reconstruct local File arrays.
    I managed to browse up and down directories with this, and even.. to my surprise, create folders!
    If you got any improvements please let me know at [email protected]

    Copyright &copy; Esmond Pitt, 2007. All rights reserved.
    * RemoteFileSystem.java
    * Created on 13 May 2007, 14:39
    import java.io.File;
    import java.io.IOException;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    import javax.swing.Icon;
    * @author Esmond Pitt
    public interface RemoteFileSystem extends Remote
         File createFileObject(String path) throws RemoteException;
         File[] getFiles(File dir, boolean useFileHiding) throws RemoteException;
         File createFileObject(File dir, String filename) throws RemoteException;
         File getChild(File parent, String fileName) throws RemoteException;
         boolean isFloppyDrive(File dir) throws RemoteException;
         boolean isFileSystemRoot(File dir) throws RemoteException;
         boolean isFileSystem(File f) throws RemoteException;
         boolean isDrive(File dir) throws RemoteException;
         boolean isComputerNode(File dir) throws RemoteException;
         File createNewFolder(File containingDir) throws RemoteException, IOException;
         File getParentDirectory(File dir) throws RemoteException;
         String getSystemDisplayName(File f) throws RemoteException;
         Icon getSystemIcon(File f) throws RemoteException;
         String getSystemTypeDescription(File f) throws RemoteException;
         File getDefaultDirectory() throws RemoteException;
         File getHomeDirectory() throws RemoteException;
         File[] getRoots() throws RemoteException;
         // File     createFileSystemRoot(File f) throws RemoteException;
    import java.io.File;
    import java.io.IOException;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.Icon;
    import javax.swing.filechooser.FileSystemView;
    * @author Esmond Pitt
    * @version $Revision: 3 $
    public class RemoteFileSystemServer extends UnicastRemoteObject implements RemoteFileSystem
         private FileSystemView     fs = FileSystemView.getFileSystemView();
         private Logger     logger = Logger.getLogger(this.getClass().getName());
         /** Creates a new instance of RemoteFileSystemServer */
         public RemoteFileSystemServer(int port) throws RemoteException
              super(port);
              logger.log(Level.INFO, "exported on port {0} and receiving calls fs={1}", new Object[]{port, fs});
         public File createFileObject(String path)
              logger.log(Level.FINE, "createFileObject({0})", path);
              return fs.createFileObject(path);
         public File createFileObject(File dir, String filename)
              logger.log(Level.FINE, "createFileObject({0},{1})", new Object[]{dir, filename});
              return fs.createFileObject(dir, filename);
         public File[] getFiles(File dir, boolean useFileHiding)
              logger.log(Level.FINE, "getFiles({0},{1})", new Object[]{dir, useFileHiding});
              return fs.getFiles(dir, useFileHiding);
         public File getChild(File parent, String fileName)
              logger.log(Level.FINE, "getChild({0},{1})", new Object[]{parent, fileName});
              return fs.getChild(parent, fileName);
         public boolean isFloppyDrive(File dir)
              logger.log(Level.FINE, "isFloppyDrive({0})", dir);
              return fs.isFloppyDrive(dir);
         public boolean isFileSystemRoot(File dir)
              logger.log(Level.FINE, "isFileSystemRoot({0})", dir);
              return fs.isFileSystemRoot(dir);
         public boolean isFileSystem(File f)
              logger.log(Level.FINE, "isFileSystem({0})", f);
              return fs.isFileSystem(f);
         public boolean isDrive(File dir)
              logger.log(Level.FINE, "isDrive({0})", dir);
              return fs.isDrive(dir);
         public boolean isComputerNode(File dir)
              logger.log(Level.FINE, "isComputerNode({0})", dir);
              return fs.isComputerNode(dir);
         public File createNewFolder(File containingDir) throws IOException
              logger.log(Level.FINE, "createNewFolder({0})", containingDir);
              return fs.createNewFolder(containingDir);
         public File getParentDirectory(File dir)
              logger.log(Level.FINE, "getParentDirectory({0})", dir);
              return fs.getParentDirectory(dir);
         public String getSystemDisplayName(File f)
              logger.log(Level.FINE, "getSystemDisplayName({0})", f);
              return fs.getSystemDisplayName(f);
         public Icon getSystemIcon(File f)
              logger.log(Level.FINE, "getSystemIcon({0})", f);
              return fs.getSystemIcon(f);
         public String getSystemTypeDescription(File f)
              logger.log(Level.FINE, "getSystemTypeDescription({0})", f);
              return fs.getSystemTypeDescription(f);
         public File getDefaultDirectory()
              logger.log(Level.FINE, "getDefaultDirectory()");
              return fs.getDefaultDirectory();
         public File getHomeDirectory()
              logger.log(Level.FINE, "getHomeDirectory()");
              return fs.getHomeDirectory();
         public File[] getRoots()
              logger.log(Level.FINE, "getRoots()");
              return fs.getRoots();
          public File createFileSystemRoot(File f)
              return fs.createFileSystemRoot(f);
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.Icon;
    import javax.swing.filechooser.FileSystemView;
    * @author Esmond Pitt
    * @version $Revision: 4 $
    public class RemoteFileSystemView extends FileSystemView
         private Logger     logger = Logger.getLogger(this.getClass().getName());
         private RemoteFileSystem     fs;
         public RemoteFileSystemView(String host)
         throws NotBoundException, RemoteException, MalformedURLException
              String     url = "rmi://"+host+"/"+RemoteFileSystem.class.getName();
              this.fs = (RemoteFileSystem)Naming.lookup(url);
              logger.log(Level.INFO, "Connected to {0} via {1}", new Object[]{url, fs});
         public File createFileObject(String path)
              logger.entering(this.getClass().getName(), "createFileObject", path);
              try
                   return fs.createFileObject(path);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "path="+path, exc);
                   return null;
         public File[] getFiles(File dir, boolean useFileHiding)
              logger.entering(this.getClass().getName(), "getFiles", new Object[]{dir, useFileHiding});
              try
                   return fs.getFiles(dir, useFileHiding);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir+" useFileHiding="+useFileHiding, exc);
                   return null;
         public File createFileObject(File dir, String filename)
              logger.entering(this.getClass().getName(), "createFileObject", new Object[]{dir, filename});
              try
                   return fs.createFileObject(dir, filename);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir+" filename="+filename, exc);
                   return null;
         public File getChild(File parent, String fileName)
              logger.entering(this.getClass().getName(), "getChild", new Object[]{parent, fileName});
              try
                   return fs.getChild(parent, fileName);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "parent="+parent+" fileName="+fileName, exc);
                   return null;
         public boolean isFloppyDrive(File dir)
              logger.entering(this.getClass().getName(), "isFloppyDrive", dir);
              try
                   return fs.isFloppyDrive(dir);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir, exc);
                   return false;
         public boolean isFileSystemRoot(File dir)
              logger.entering(this.getClass().getName(), "isFileSystemRoot", dir);
              try
                   return fs.isFileSystemRoot(dir);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir, exc);
                   return false;
         public boolean isFileSystem(File file)
              logger.entering(this.getClass().getName(), "isFileSystem", file);
              try
                   return fs.isFileSystem(file);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "file="+file, exc);
                   return false;
         public boolean isDrive(File dir)
              logger.entering(this.getClass().getName(), "isDrive", dir);
              try
                   return fs.isDrive(dir);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir, exc);
                   return false;
         public boolean isComputerNode(File dir)
              logger.entering(this.getClass().getName(), "isComputerNode", dir);
              try
                   return fs.isComputerNode(dir);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir, exc);
                   return false;
         public File createNewFolder(File containingDir) throws IOException
              logger.entering(this.getClass().getName(), "createNewFolder", containingDir);
              try
                   return fs.createNewFolder(containingDir);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "containingDir="+containingDir, exc);
                   return null;
         public File getParentDirectory(File dir)
              logger.entering(this.getClass().getName(), "getParentDirectory", dir);
              try
                   return fs.getParentDirectory(dir);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "dir="+dir, exc);
                   return null;
         public String getSystemDisplayName(File file)
              logger.entering(this.getClass().getName(), "getSystemDisplayName", file);
              try
                   return fs.getSystemDisplayName(file);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "file="+file, exc);
                   return null;
         public Icon getSystemIcon(File file)
              logger.entering(this.getClass().getName(), "getSystemIcon", file);
              try
                   return fs.getSystemIcon(file);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "file="+file, exc);
                   return null;
         public String getSystemTypeDescription(File file)
              logger.entering(this.getClass().getName(), "getSystemTypeDescription", file);
              try
                   return fs.getSystemTypeDescription(file);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "file="+file, exc);
                   return null;
         public File getDefaultDirectory()
              logger.entering(this.getClass().getName(), "getDefaultDirectory");
              try
                   return fs.getDefaultDirectory();
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "getDefaultDirectory()", exc);
                   return null;
         public File getHomeDirectory()
              logger.entering(this.getClass().getName(), "getHomeDirectory");
              try
                   return fs.getHomeDirectory();
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "getHomeDirectory()", exc);
                   return null;
         public File[] getRoots()
              logger.entering(this.getClass().getName(), "getRoots");
              try
                   return fs.getRoots();
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "getRoots()", exc);
                   return null;
         protected File createFileSystemRoot(File file)
              logger.entering(this.getClass().getName(), "createFileSystemRoot", file);
              logger.log(Level.SEVERE, "createFileSystemRoot called with ({0})", new Object[]{file});
              try
                   return fs.createFileSystemRoot(file);
              catch (RemoteException exc)
                   logger.log(Level.SEVERE, "", exc);
              return null;
    }

  • JFileChooser or FileDialog.... so many questions

    hi all,
    i have searched the forum to no avail so i need your help.
    i am wanting to use jfilechooser to get the directory listing and files over a tcp/ip connection. i send the getdirectory message to the server and it returns the directory. next, i send the getfiles message to the server and it returns the files in the directory. i can get the directory by overriding the setcurrentdirectory()method but how do i set the files in the filechooser. can it even be done this way. if so, what methods do i need to override to accomplish this task. any help will be greatly appreciated
    thanks

    I believe JFileChooser is only for file systems that the current JVM has access to (in other words, not remote file systems).

  • How JFileChooser finds the Desktop and can browse CIFS(SMB) in windows.

    Hello.
    I'm currently using serveral methods from FileSystemView used by JFileChooser to detect if a File is a system root, a floppy, or to find the "My Documents" folder under windows.
    JFileChooser however is also able to provide a link to the desktop. How do I get that location from Java?
    Further more. JFileChooser is able to browse and use resources located on the network using CIFS(SMB). I've searched through JFileChoosers source. But I can't figure out how it does this.
    I'm currently writing a Folder synchronization app. As you can see in the screenshot ( http://users.telenet.be/greenhouse/Screenshot-7.png ) I'm trying to integrate the location browser (Look based on the GTK file browser) more into windows. I want my users to be able to browse CIFS just like in the JFileChooser. How do I do this?
    The reason I'm writing my own browser is because the GTK one provided in Java is more then lacking. And I can provide browsing for remote resources more easily (like SFTP and SCP)
    In short:
    *JFileChooser however is also able to provide a link to the desktop. How do I get that location from Java?
    *JFileChooser browses and uses CIFS in windows. How do I do this (without a 3th party library) the same way as JFileChooser does it?
    Message was edited by:
    finalbeta

    JFileChooser fr = new javax.swing.JFileChooser();
            FileSystemView fw=fr.getFileSystemView();
            defaultfolder = fw.getDefaultDirectory().getPath();
           String desktopfolder;
            if(System.getProperty("os.name").startsWith("Windows")){
                for(File tmp:fw.getRoots()){
                    dekstopfolder = tmp.getPath();
            }That piece of code gives the path to the desktop folder in Windows. In linux it returns root. (getRoots();) How horrible.
    I hope I'm going about this the wrong way. Because this would be an ugly Java API.

  • Unable to navigate the folders in JFileChooser when we have Unix file syste

    I'm trying to display a JFileChooser on a client system (that happens to be Windows) that will allow the user to browse the filesystem and open files from a remote system (that happens to be UNIX). To do this, I've created a class which extends FileSystemView, and created a JFileChooser using these class.
    This allows me to see all of the files and directories in the home/default directory when the dialog is first displayed. However, I cannot navigate in the dialog box. I am unable to navigate by double clicking on the folder. JFileChooser setCurrentDirectory() ignores FileSystemView model
    Can Any one help me in this?

    What is your DB version?
    If you are using 11g, use adrci > show alert > choose the database to view alert log. The events are always logged in alert.log, you are probably looking at wrong/old file .

Maybe you are looking for