현재 파일을 시스템 클립 보드에 복사 할 수있는 Java 코드로 작업하고 있습니다.Mac OSX에서 파일을 복사하는 데 필요한 DataFlavor는 무엇입니까
Windows 및 Linux의 경우 이미 작동 중입니다. OSX의 경우 몇 가지 맛을 시도했지만 Finder의 "붙여 넣기"작업은 결코 활성화되지 않습니다.
Finder에 어떤 DataFlavor 설정이 필요합니까?
사용 맛 :
DataFlavor.javaFileListFlavor
URILIST_FLAVOR = new DataFlavor("text/uri-list");
XFILELIST_FLAVOR = new DataFlavor("application/x-java-file-list");
GNOMEFILELIST_FLAVOR = new DataFlavor("x-special/gnome-copied-files");
방법은 맛에 대한 데이터를 반환 :
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(FILELIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return Arrays.asList(files);
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
} else if(DataFlavor.javaFileListFlavor.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return locallist;
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
} else if(URILIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return Arrays.asList(files);
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
} else if(GNOMEFILELIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return Arrays.asList(files);
} else if(InputStream.class == flavor.getRepresentationClass()) {
// FIXME support cut and copy
return getStreamData(files, "copy");
}
} else if(XFILELIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return locallist;
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
}
throw new UnsupportedFlavorException(flavor);
}
감사합니다, 앙드레
아무 아이디어도 없습니까? –