打开包含文件的文件夹并突出显示它

时间:2013-09-28 18:33:37

标签: java file io

我需要打开一个包含指定文件的文件夹,然后突出显示该文件。我一直在寻找这个,但我一直不走运。有人可以解释如何使用java来完成这项工作吗?

非常感谢。我可以打开文件,文件夹,但不能打开包含文件夹并突出显示文件。跨平台代码将是一个加号,或者只是指向我的方向!谢谢!

@UPDATE:

基本上我正在做一个图像分类器。我有ArrayList个包含文件名,例如myarraylist.get(0)将返回funny_cat.jpg

这可以是在与文件/文件夹一起使用的程序中具有的便利功能。使用以下方法实际打开包含文件夹很简单:

我希望用户能够打开JList中当前选定的项目并打开包含所选目标文件的文件夹。

我会发布代码,但是这个问题太长而且最不必要,我将在下面发布如何打开资源管理器窗口,为程序的设置部分,以便选择要使用的新目录: / p>

public void browseFolder(){

     System.out.println("browsing!");

        final JFileChooser fc = new JFileChooser();

        File dir = new File(core.Loader.path);

        fc.setCurrentDirectory(dir);

        // Windows and Mac OSX compatibility code
        if (System.getProperty("os.name").startsWith("Mac OS X")) {

            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        } else {
            fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        }


        fc.setApproveButtonText("Choose directory");
        int returnVal = fc.showOpenDialog(fc);

            if (returnVal == JFileChooser.APPROVE_OPTION) {


                File f = fc.getSelectedFile();
                // if the user accidently click a file, then select the parent directory.
                if (!f.isDirectory()) {
                    f = f.getParentFile();
                }

                // debug
                System.out.println("Selected directory for import " + f);

            }
}

@UPDATE

我找到了解决方案,将在下面发布答案。

1 个答案:

答案 0 :(得分:1)

所以,我只是从执行的动作中调用了这个方法,并且它可以解决问题。

基本上,解决方案是制作这个终端命令:

open -R absolute/path/to/file.jpg

这仅适用于Mac OS X,以下是我使用的方法:

 public void openFileInFolder(String filename){

    try {
       Process ls_proc;

       String mvnClean = "open -R " + core.Loader.path + "/" + file_chosen;
       String OS = System.getProperty("os.name");

       System.out.println("OS is: " + OS);

       if (OS.contains("Windows")) {
           //code ...
       } else {
           ls_proc = Runtime.getRuntime().exec(mvnClean);
       }

     } catch (Exception e){
          System.err.println("exception");
     }
}