【问题标题】:Open folder containing file and highlight it打开包含文件的文件夹并突出显示它
【发布时间】:2013-09-28 18:33:37
【问题描述】:

我需要打开一个包含指定文件的文件夹,并突出显示该文件。我一直在寻找这个,但我一直很不幸。有人能解释一下如何使用 java 来完成吗?

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

@更新:

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

在处理文件/文件夹的程序中,这可能是一个方便的功能。使用以下命令实际打开包含文件夹很容易:

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

我会发布代码,但是对于这个问题来说它太长并且最不需要,但是我将在下面发布我如何打开资源管理器窗口,对于程序的设置部分,以便选择要使用的新目录:

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);

            }
}

@更新

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

【问题讨论】:

  • 高亮是什么意思?你有某种用户界面吗?
  • 很多澄清您的问题。请出示您当前的相关代码。
  • @SotiriosDelimanolis 我的意思是当您右键单击任何文件并单击“打开包含文件夹”时会发生什么;它会在文件夹和文件的路径中打开一个 explorer.exe 或 finder.app 窗口,您点击的那个文件会突出显示。
  • 对不起,不清楚的帖子,澄清了它,后来我找到了答案。想把它作为答案发布,谢谢!
  • @ChristianFeo 呃……JFileChooser.setSelectedFile() 是做什么的?似乎它应该完成这项工作。

标签: java file io


【解决方案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");
     }
}

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 2011-01-11
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多