I am trying to write a code which runs at background and monitors the copy actions for copying a .mp3 file or a folder containing a .mp3 file
{
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();
}
}
}
Basically, yes. You need to check the
Clipboard
contents to see if it supports theDataFlavor.javaFileListFlavor
DataFlavor
. If it does, you need to iterate over the contents (which isjava.util.List
ofFile
s) and make a determination of the content.The following only checks to see if the files are
.mp3
files (by checking the name extension), but it wouldn't be hard to check forisDirectory
and do a recursive check of the directory...My suggestion is: http://msdn.microsoft.com/en-us/library/ff468802(v=vs.85).aspx
Using native windows C function and user JNA(Java native access library) to complete your requirement. JNA: https://github.com/twall/jna