- java.lang.Object
-
- javax.activation.DataHandler
-
- All Implemented Interfaces:
-
Transferable
public class DataHandler extends Object implements Transferable
DataHandler类为许多不同来源和格式的数据提供了一致的界面。 它使用DataContentHandlers管理简单的流到字符串转换和相关操作。 它提供对可以对数据操作的命令的访问。 命令是使用CommandMap找到的。DataHandler和可传输接口
DataHandler实现了可传输接口,以便数据可用于AWT数据传输操作,如剪切和粘贴和拖放。 Transferable接口的实现依赖于与DataHandler的特定实例中表示的数据的MIME类型相对应的已安装DataContentHandler对象的可用性。
DataHandler和CommandMaps
DataHandler跟踪当前用于为命令请求(
getCommand, getAllCommands, getPreferredCommands
)提供服务的CommandMap。 DataHandler的每个实例可能使用与其相关联的CommandMap,使用setCommandMap
方法。 如果没有设置CommandMap,DataHandler会在CommandMap中调用getDefaultCommandMap
方法,并使用它返回的值。 有关详细信息,请参阅CommandMap 。DataHandler和URL
当使用URL构造时,当前的DataHandler实现创建一个URLDataSource的私有实例。
- 从以下版本开始:
- 1.6
- 另请参见:
-
CommandMap
,DataContentHandler
,DataSource
,URLDataSource
-
-
构造方法摘要
构造方法 Constructor 描述 DataHandler(Object obj, String mimeType)
创建一个表示此MIME类型对象的DataHandler
实例。DataHandler(URL url)
创建引用URL的DataHandler
实例。DataHandler(DataSource ds)
创建引用指定的DataSource的DataHandler
实例。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
。
-
-
-
构造方法详细信息
-
DataHandler
public DataHandler(DataSource ds)
创建引用指定的DataSource的DataHandler
实例。 数据以字节流形式存在。 DataSource将提供一个InputStream来访问数据。- 参数
-
ds
- DataSource
-
DataHandler
public DataHandler(Object obj, String mimeType)
创建一个表示此MIME类型对象的DataHandler
实例。 当应用程序已经具有Java对象形式的数据的内存中表示时,将使用此构造函数。- 参数
-
obj
- Java对象 -
mimeType
- 对象的MIME类型
-
DataHandler
public DataHandler(URL url)
创建引用URL的DataHandler
实例。 DataHandler内部创建一个URLDataSource
实例来表示URL。- 参数
-
url
- 一个URL对象
-
-
方法详细信息
-
getDataSource
public DataSource getDataSource()
返回与此DataHandler实例关联的DataSource。对于已使用DataSource实例化的DataHandler,此方法返回用于创建DataHandler对象的DataSource。 在其他情况下,DataHandler根据用于构造DataHandler的数据构建DataSource。 为DataHandler创建的DataSource 未实例化DataSource为缓存高性能的原因。
- 结果
- 此DataHandler的有效DataSource对象
-
getName
public String getName()
返回数据对象的名称。 如果此DataHandler是使用DataSource创建的,则此方法调用到DataSource.getName
方法,否则返回null 。- 结果
- 对象的名称
-
getContentType
public String getContentType()
返回从源对象检索的此对象的MIME类型。 请注意,这是具有参数的完整类型。- 结果
- MIME类型
-
getInputStream
public InputStream getInputStream() throws IOException
获取此对象的InputStream。对于使用DataSource实例化的DataHandler,DataHandler调用
DataSource.getInputStream
方法并将结果返回给调用者。对于使用Object实例化的DataHandler,DataHandler首先尝试为对象找到一个DataContentHandler。 如果DataHandler找不到此MIME类型的DataContentHandler,则会引发UnsupportedDataTypeException。 如果成功,它将创建一个管道和一个线程。 线程使用DataContentHandler的
writeTo
方法将流数据写入管道的一端。 管道的另一端返回给调用者。 由于创建线程以复制数据,因此在复制期间可能发生的IOExceptions不能传播回调用者。 结果是一个空的流。- 结果
- InputStream表示此数据
- 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
DataContentHandler.writeTo(java.lang.Object, java.lang.String, java.io.OutputStream)
,UnsupportedDataTypeException
-
writeTo
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错误
-
getOutputStream
public OutputStream getOutputStream() throws IOException
获取此DataHandler的OutputStream以允许覆盖底层数据。 如果DataHandler是使用DataSource创建的,则调用DataSource的getOutputStream
方法。 否则返回null
。- 结果
- OutputStream
- 异常
-
IOException
- 创建OutputStream的失败 - 另请参见:
-
DataSource.getOutputStream()
,URLDataSource
-
getTransferDataFlavors
public DataFlavor[] getTransferDataFlavors()
返回此数据可用的DataFlavors。返回一个DataFlavor对象数组,表示可以提供数据的风格。数组通常根据提供数据的偏好进行排序,从最丰富的描述到最不丰富的描述。
DataHandler尝试查找与数据的MIME类型相对应的DataContentHandler。 如果找到,DataHandler会调用DataContentHandler的
getTransferDataFlavors
方法。如果无法找到DataContentHandler,并且如果使用DataSource(或URL)创建了DataHandler,则会返回一个表示此对象的MIME类型和
java.io.InputStream
类的java.io.InputStream
。 如果使用对象和MIME类型创建了DataHandler,那么getTransferDataFlavors将返回一个表示此对象的MIME类型和对象类的DataFlavor。- Specified by:
-
getTransferDataFlavors
在接口Transferable
- 结果
- 一系列可以传输此数据的数据风格
- 另请参见:
-
DataContentHandler.getTransferDataFlavors()
-
isDataFlavorSupported
public boolean isDataFlavorSupported(DataFlavor flavor)
返回此对象是否支持指定的数据flavor。该方法遍历从
getTransferDataFlavors
返回的DataFlavors,将每个与指定的风味进行比较。- Specified by:
-
isDataFlavorSupported
在接口Transferable
- 参数
-
flavor
- 要求的数据风味 - 结果
- 如果支持数据风格,则为true
- 另请参见:
-
getTransferDataFlavors()
-
getTransferData
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。
- Specified by:
-
getTransferData
在接口Transferable
- 参数
-
flavor
- 要求的数据风味 - 结果
- 物体
- 异常
-
UnsupportedFlavorException
- 如果数据无法转换为请求的风味 -
IOException
- 如果发生I / O错误 - 另请参见:
-
ActivationDataFlavor
-
setCommandMap
public void setCommandMap(CommandMap commandMap)
设置CommandMap以供DataHandler使用。 将其设置为null
会导致CommandMap恢复为CommandMap.getDefaultCommandMap
方法返回的CommandMap。 更改CommandMap或将其设置为null
,将清除从上一个CommandMap缓存的任何数据。- 参数
-
commandMap
- 要在此DataHandler中使用的CommandMap - 另请参见:
-
CommandMap.setDefaultCommandMap(javax.activation.CommandMap)
-
getPreferredCommands
public CommandInfo[] getPreferredCommands()
返回此类型数据的首选命令。 该方法调用与此DataHandler实例相关联的CommandMap中的getPreferredCommands
方法。 此方法返回一个表示可用命令子集的数组。 在存在由DataHandler表示的MIME类型的多个命令的情况下,安装的CommandMap将选择相应的命令。- 结果
- 表示首选命令的CommandInfo对象
- 另请参见:
-
CommandMap.getPreferredCommands(java.lang.String)
-
getAllCommands
public CommandInfo[] getAllCommands()
返回此类型数据的所有命令。 此方法返回一个包含此DataHandler表示的数据类型的所有命令的数组。 此DataHandler表示的底层数据的MIME类型用于调用与此DataHandler关联的CommandMap的getAllCommands
方法。- 结果
- 表示所有命令的CommandInfo对象
- 另请参见:
-
CommandMap.getAllCommands(java.lang.String)
-
getCommand
public CommandInfo getCommand(String cmdName)
获取命令cmdName 。 使用由DataHandler中安装的CommandMap定义的搜索语义。 此DataHandler表示的底层数据的MIME类型用于调用与此DataHandler关联的CommandMap的getCommand
方法。- 参数
-
cmdName
- 命令名 - 结果
- CommandInfo对应的命令
- 另请参见:
-
CommandMap.getCommand(java.lang.String, java.lang.String)
-
getContent
public Object getContent() throws IOException
以其首选对象形式返回数据。如果使用对象实例化了DataHandler,则返回该对象。
如果DataHandler用DataSource实例化,则此方法使用DataContentHandler返回此DataHandler表示的数据的内容对象。 如果没有找到
DataContentHandler
数据类型,那么DataHandler将为数据返回一个InputStream。- 结果
- 内容。
- 异常
-
IOException
- 如果在此操作期间发生IOException。
-
getBean
public Object getBean(CommandInfo cmdinfo)
一个方便的方法,它接受CommandInfo对象并实例化相应的命令,通常是一个JavaBean组件。这种方法调用了CommandInfo的
getCommandObject
方法,其中ClassLoader
用于加载javax.activation.DataHandler
类。- 参数
-
cmdinfo
- 与命令对应的CommandInfo - 结果
- 实例化的命令对象
-
setDataContentHandlerFactory
public static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
设置DataContentHandlerFactory。 首先调用DataContentHandlerFactory来查找DataContentHandlers。 DataContentHandlerFactory只能设置一次。如果DataContentHandlerFactory已经被设置,这个方法会抛出一个错误。
- 参数
-
newFactory
- DataContentHandlerFactory - 异常
-
Error
- 如果工厂已经定义。 - 另请参见:
-
DataContentHandlerFactory
-
-