一尘不染

是否可以使用java中的awt.Toolkit和Clipboard来了解剪贴板中复制的内容是否为mp3文件

java

我试图写它在运行的代码 背景显示器 的复制拷贝动作 .MP3 文件包含文件夹 一个 .MP3 文件

{

            Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();

        if (cb.isDataFlavorAvailable(DataFlavor.javaFileListFlavor))
         {
               try {
                String name = ""+cb.getData(DataFlavor.javaFileListFlavor);
             boolean found = false;
                 if (name.toLowerCase().endsWith(".mp3]"))
                     {
                                System.out.println("Is MP3");
                                found = true;
                             }


                 if (!found)
               {
                        System.out.println("Is not MP3");
                   }

                    }

           catch(UnsupportedFlavorException ex)
             {
                ex.printStackTrace();
                 }
           catch(IOException ex)
             {
                ex.printStackTrace();
                 }
         }

    }

阅读 214

收藏
2020-12-03

共1个答案

一尘不染

基本上是。您需要检查Clipboard内容以查看是否支持DataFlavor.javaFileListFlavor
DataFlavor。如果是这样,则需要遍历内容(java.util.ListFile的)并确定内容。

以下仅检查文件是否为.mp3文件(通过检查名称扩展名),但并不难检查isDirectory并递归检查目录…

Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
if (cb.isDataFlavorAvailable(DataFlavor.javaFileListFlavor)) {
    try {
        List files = (List) cb.getData(DataFlavor.javaFileListFlavor);
        boolean found = false;
        for (Object o : files) {
            if (o instanceof File) {
                File f = (File) o;
                if (f.getName().toLowerCase().endsWith(".mp3")) {
                    System.out.println("I haz MP3");
                    found = true;
                }
            }
        }
        if (!found) {
            System.out.println("I notz haz MP3");
        }
    } catch (UnsupportedFlavorException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
2020-12-03