public class DataHandler extends Object implements Transferable
DataHandler和可传输接口
DataHandler实现了可传输接口,以便数据可用于AWT数据传输操作,如剪切和粘贴和拖放。 Transferable接口的实现依赖于与DataHandler的特定实例中表示的数据的MIME类型相对应的已安装DataContentHandler对象的可用性。
DataHandler和CommandMaps
 DataHandler在跟踪它使用为命令(服务请求当前的CommandMap的getCommand , getAllCommands , getPreferredCommands )。 DataHandler的每个实例可能都有一个与它相关联的CommandMap,使用setCommandMap方法。 如果没有设置CommandMap,DataHandler会在getDefaultCommandMap中调用getDefaultCommandMap方法,并使用它返回的值。 见的CommandMap以获取更多信息。 
DataHandler和URL
当使用URL构造时,当前的DataHandler实现创建一个URLDataSource的私有实例。
CommandMap , DataContentHandler , DataSource , URLDataSource 
       | Constructor and Description | 
|---|
| DataHandler(DataSource ds)
              创建引用指定的DataSource的 
              DataHandler实例。 | 
| DataHandler(Object obj, String mimeType)
              创建一个 
              DataHandler此MIME类型对象的DataHandler实例。 | 
| DataHandler(URL url)
              创建引用URL的 
              DataHandler实例。 | 
| Modifier and Type | Method and Description | 
|---|---|
| CommandInfo[] | getAllCommands()
              返回此类型数据的所有命令。 
             | 
| Object | getBean(CommandInfo cmdinfo)
              一个方便的方法,它接受CommandInfo对象并实例化相应的命令,通常是一个JavaBean组件。 
             | 
| CommandInfo | getCommand(String cmdName)
              获取命令 
             cmdName 。 
             | 
| Object | getContent()
              以其首选对象形式返回数据。 
             | 
| String | getContentType()
              返回从源对象检索的此对象的MIME类型。 
             | 
| DataSource | getDataSource()
              返回与此DataHandler实例关联的DataSource。 
             | 
| InputStream | getInputStream()
              获取此对象的InputStream。 
             | 
| String | getName()
              返回数据对象的名称。 
             | 
| OutputStream | getOutputStream()
              获取此DataHandler的OutputStream以允许覆盖底层数据。 
             | 
| CommandInfo[] | getPreferredCommands()
              返回此类型数据的 
             首选命令。 
             | 
| Object | getTransferData(DataFlavor flavor)
              返回表示要传输的数据的对象。 
             | 
| DataFlavor[] | getTransferDataFlavors()
              返回此数据可用的DataFlavors。 
             | 
| boolean | isDataFlavorSupported(DataFlavor flavor)
              返回此对象是否支持指定的数据flavor。 
             | 
| void | setCommandMap(CommandMap commandMap)
              设置CommandMap以供DataHandler使用。 
             | 
| static void | setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
              设置DataContentHandlerFactory。 
             | 
| void | writeTo(OutputStream os)
              将数据写入 
              OutputStream。 | 
public DataHandler(DataSource ds)
DataHandler实例。 
           数据以字节流形式存在。 
           DataSource将提供一个InputStream来访问数据。 
          ds - DataSource 
           public DataHandler(Object obj, String mimeType)
DataHandler此MIME类型对象的DataHandler实例。 
           当应用程序已经具有Java对象形式的数据的内存中表示时,将使用此构造函数。 
          obj - Java对象 
           mimeType - 对象的MIME类型 
           public DataHandler(URL url)
DataHandler实例。 
           DataHandler内部创建一个URLDataSource实例来表示URL。 
          url - 一个URL对象 
           public DataSource getDataSource()
对于已使用DataSource实例化的DataHandler,此方法返回用于创建DataHandler对象的DataSource。 在其他情况下,DataHandler根据用于构造DataHandler的数据构建DataSource。 为DataHandler创建的DataSource 未实例化DataSource为缓存高性能的原因。
public String getName()
DataSource.getName方法,否则返回null 。 
          public String getContentType()
public InputStream getInputStream() throws IOException
 对于使用DataSource实例化的DataHandler,DataHandler调用DataSource.getInputStream方法并将结果返回给调用者。 
 对于使用Object实例化的DataHandler,DataHandler首先尝试为对象找到一个DataContentHandler。 如果DataHandler找不到此MIME类型的DataContentHandler,则会引发UnsupportedDataTypeException。 如果成功,它将创建一个管道和一个线程。 线程使用DataContentHandler的writeTo方法将流数据写入管道的一端。 管道的另一端返回给调用者。 由于创建线程以复制数据,因此在复制期间可能发生的IOExceptions无法传播回调用者。 结果是一个空的流。 
IOException - 如果发生I / O错误 
           DataContentHandler.writeTo(java.lang.Object, java.lang.String, java.io.OutputStream) , UnsupportedDataTypeException 
           public void writeTo(OutputStream os) throws IOException
OutputStream 。 
           如果DataHandler是使用DataSource创建的,writeTo将检索InputStream,并将InputStream中的字节复制到传入的OutputStream。
 如果DataHandler是使用对象创建的,writeTo将检索对象类型的DataContentHandler。 如果的DataContentHandler被发现,它调用writeTo的方法DataContentHandler 。 
os - 要写入的OutputStream 
           IOException - 如果发生I / O错误 
           public OutputStream getOutputStream() throws IOException
getOutputStream方法。 
           否则返回null 。 
          IOException 
           DataSource.getOutputStream() , URLDataSource 
           public DataFlavor[] getTransferDataFlavors()
返回一个DataFlavor对象数组,表示可以提供数据的风格。数组通常根据提供数据的偏好进行排序,从最丰富的描述到最不丰富的描述。
 DataHandler尝试查找与数据的MIME类型相对应的DataContentHandler。 如果找到,DataHandler会调用DataContentHandler的getTransferDataFlavors方法。 
 如果无法找到DataContentHandler,并且如果使用DataSource(或URL)创建了DataHandler,则会返回一个表示此对象的MIME类型和java.io.InputStream类的java.io.InputStream 。 如果使用对象和MIME类型创建了DataHandler,那么getTransferDataFlavors将返回一个表示此对象的MIME类型和对象类的DataFlavor。 
getTransferDataFlavors在界面 
            Transferable 
           DataContentHandler.getTransferDataFlavors() 
           public boolean isDataFlavorSupported(DataFlavor flavor)
 该方法遍历从getTransferDataFlavors返回的getTransferDataFlavors ,将每个与指定的风味进行比较。 
isDataFlavorSupported在界面 
            Transferable 
           flavor - 数据所需的风味 
           getTransferDataFlavors() 
           public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
对于使用DataSources或URL创建的DataHandler:
 DataHandler尝试为此MIME类型定位DataContentHandler。 如果找到,则DataFlavor中传递的数据和数据类型将传递给其getTransferData方法。 如果DataHandler找不到DataContentHandler,并且flavor指定了此对象的MIME类型和java.io.InputStream类,则返回此对象的InputStream。 否则会引发UnsupportedFlavorException。 
对于使用对象创建的DataHandler:
DataHandler尝试为此MIME类型定位DataContentHandler。 如果找到,则DataFlavor中传递的数据和数据类型将传递给其getTransferData方法。 如果DataHandler找不到DataContentHandler,并且flavor指定此对象的MIME类型及其类,则会返回此DataHandler的引用对象。 否则会引发UnsupportedFlavorException。
getTransferData在界面 
            Transferable 
           flavor - 数据所要求的风味 
           UnsupportedFlavorException - 如果数据无法转换为请求的风味 
           IOException - 如果发生I / O错误 
           ActivationDataFlavor 
           public void setCommandMap(CommandMap commandMap)
null会导致CommandMap恢复为CommandMap.getDefaultCommandMap方法返回的CommandMap.getDefaultCommandMap 。 
           更改CommandMap或将其设置为null ,将清除从上一个CommandMap缓存的任何数据。 
          commandMap - 要在此DataHandler中使用的CommandMap 
           CommandMap.setDefaultCommandMap(javax.activation.CommandMap) 
           public CommandInfo[] getPreferredCommands()
getPreferredCommands与此DataHandler实例关联的方法的CommandMap。 
           此方法返回一个表示可用命令子集的数组。 
           在存在由DataHandler表示的MIME类型的多个命令的情况下,安装的CommandMap将选择相应的命令。 
          CommandMap.getPreferredCommands(java.lang.String) 
           public CommandInfo[] getAllCommands()
getAllCommands方法。 
          CommandMap.getAllCommands(java.lang.String) 
           public CommandInfo getCommand(String cmdName)
getCommand方法。 
          cmdName - 命令名 
           CommandMap.getCommand(java.lang.String, java.lang.String) 
           public Object getContent() throws IOException
如果使用对象实例化了DataHandler,则返回该对象。
 如果DataHandler用DataSource实例化,则此方法使用DataContentHandler返回此DataHandler表示的数据的内容对象。 如果没有DataContentHandler可以为这个数据类型可以发现,的DataHandler返回数据的InputStream。 
IOException - 如果在此操作期间发生IOException。 
           public Object getBean(CommandInfo cmdinfo)
 这种方法调用CommandInfo的getCommandObject方法与ClassLoader用于加载javax.activation.DataHandler类本身。 
cmdinfo - 与命令对应的CommandInfo 
           public static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
如果DataContentHandlerFactory已经被设置,这个方法会抛出一个错误。
newFactory - DataContentHandlerFactory 
           Error - 如果工厂已经定义。 
           DataContentHandlerFactory 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.