2010-07-12 20 views
5

Şu anda sistem panosuna dosyaları kopyalayabilen Java kodu üzerinde çalışıyorum.Mac OSX'te dosya kopyalamak için gerekli DataFlavor nedir?

Windows ve Linux için zaten çalışıyordum. OSX için çeşitli tatlar denedim ancak Finder'daki "Yapıştır" eylemi hiçbir zaman etkin değil.

Finder için hangi DataFlavor ayarlarının gerekli olduğu hakkında bir fikriniz var mı?

Kullanılan tatlar:

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

yöntem lezzet için verileri döndürmek için:

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

sayesinde André

+0

Kimse hakkında fikir sahibi değil misiniz? –

cevap

0

Belki DataFlavor#javaFileListFlavor denemelisiniz. API belgelerinden

alıntı:

DataFlavor # javaFileListFlavor (Link)

Java (ve altta yatan bir platform) Bu tip/alt tipi bir DataFlavor/from dosyaların listesini aktarmak için java.util.List'in temsil sınıfı kullanılmıştır. Listenin her elemanının java.io.File türünde olması/olması garanti edilir.
+0

bu arada ... 'System.out.println (DataFlavor.javaFileListFlavor.getMimeType())' nin sonucu '' application/x-java-file-list; class = java.util.List' – headcr4sh

+0

Lütfen soruma bakın: javaFileListFlavor zaten ele alınmıştır. Bulucu bu lezzeti kullanmaz. –

+0

Oh ... bu gerçekten garip görünüyor. – headcr4sh

İlgili konular