public class DataHandler extends Object implements Transferable
DataHandler and the Transferable Interface
DataHandler implements the Transferable interface so that data can be used in AWT data transfer operations, such as cut and paste and drag and drop. The implementation of the Transferable interface relies on the availability of an installed DataContentHandler object corresponding to the MIME type of the data represented in the specific instance of the DataHandler.
DataHandler and CommandMaps
 The DataHandler keeps track of the current CommandMap that it uses to
 service requests for commands (getCommand,
 getAllCommands, getPreferredCommands).
 Each instance of a DataHandler may have a CommandMap associated with
 it using the setCommandMap method.  If a CommandMap was
 not set, DataHandler calls the getDefaultCommandMap
 method in CommandMap and uses the value it returns. See
 CommandMap for more information. 
DataHandler and URLs
The current DataHandler implementation creates a private instance of URLDataSource when it is constructed with a URL.
CommandMap, 
DataContentHandler, 
DataSource, 
URLDataSource| Constructor and Description | 
|---|
| DataHandler(DataSource ds)Create a  DataHandlerinstance referencing the
 specified DataSource. | 
| DataHandler(Object obj,
           String mimeType)Create a  DataHandlerinstance representing an object
 of this MIME type. | 
| DataHandler(URL url)Create a  DataHandlerinstance referencing a URL. | 
| Modifier and Type | Method and Description | 
|---|---|
| CommandInfo[] | getAllCommands()Return all the commands for this type of data. | 
| Object | getBean(CommandInfo cmdinfo)A convenience method that takes a CommandInfo object
 and instantiates the corresponding command, usually
 a JavaBean component. | 
| CommandInfo | getCommand(String cmdName)Get the command cmdName. | 
| Object | getContent()Return the data in its preferred Object form. | 
| String | getContentType()Return the MIME type of this object as retrieved from
 the source object. | 
| DataSource | getDataSource()Return the DataSource associated with this instance
 of DataHandler. | 
| InputStream | getInputStream()Get the InputStream for this object. | 
| String | getName()Return the name of the data object. | 
| OutputStream | getOutputStream()Get an OutputStream for this DataHandler to allow overwriting
 the underlying data. | 
| CommandInfo[] | getPreferredCommands()Return the preferred commands for this type of data. | 
| Object | getTransferData(DataFlavor flavor)Returns an object that represents the data to be
 transferred. | 
| DataFlavor[] | getTransferDataFlavors()Return the DataFlavors in which this data is available. | 
| boolean | isDataFlavorSupported(DataFlavor flavor)Returns whether the specified data flavor is supported
 for this object. | 
| void | setCommandMap(CommandMap commandMap)Set the CommandMap for use by this DataHandler. | 
| static void | setDataContentHandlerFactory(DataContentHandlerFactory newFactory)Sets the DataContentHandlerFactory. | 
| void | writeTo(OutputStream os)Write the data to an  OutputStream. | 
public DataHandler(DataSource ds)
DataHandler instance referencing the
 specified DataSource.  The data exists in a byte stream form.
 The DataSource will provide an InputStream to access the data.ds - the DataSourcepublic DataHandler(Object obj, String mimeType)
DataHandler instance representing an object
 of this MIME type.  This constructor is
 used when the application already has an in-memory representation
 of the data in the form of a Java Object.obj - the Java ObjectmimeType - the MIME type of the objectpublic DataHandler(URL url)
DataHandler instance referencing a URL.
 The DataHandler internally creates a URLDataSource
 instance to represent the URL.url - a URL objectpublic DataSource getDataSource()
For DataHandlers that have been instantiated with a DataSource, this method returns the DataSource that was used to create the DataHandler object. In other cases the DataHandler constructs a DataSource from the data used to construct the DataHandler. DataSources created for DataHandlers not instantiated with a DataSource are cached for performance reasons.
public String getName()
DataSource.getName method, otherwise it
 returns null.public String getContentType()
public InputStream getInputStream() throws IOException
 For DataHandlers instantiated with a DataSource, the DataHandler
 calls the DataSource.getInputStream method and
 returns the result to the caller.
 
 For DataHandlers instantiated with an Object, the DataHandler
 first attempts to find a DataContentHandler for the Object. If
 the DataHandler can not find a DataContentHandler for this MIME
 type, it throws an UnsupportedDataTypeException.  If it is
 successful, it creates a pipe and a thread.  The thread uses the
 DataContentHandler's writeTo method to write the
 stream data into one end of the pipe.  The other end of the pipe
 is returned to the caller.  Because a thread is created to copy
 the data, IOExceptions that may occur during the copy can not be
 propagated back to the caller. The result is an empty stream.
IOException - if an I/O error occursDataContentHandler.writeTo(java.lang.Object, java.lang.String, java.io.OutputStream), 
UnsupportedDataTypeExceptionpublic void writeTo(OutputStream os) throws IOException
OutputStream.If the DataHandler was created with a DataSource, writeTo retrieves the InputStream and copies the bytes from the InputStream to the OutputStream passed in.
 If the DataHandler was created with an object, writeTo
 retrieves the DataContentHandler for the object's type.
 If the DataContentHandler was found, it calls the
 writeTo method on the DataContentHandler.
os - the OutputStream to write toIOException - if an I/O error occurspublic OutputStream getOutputStream() throws IOException
getOutputStream method is called.
 Otherwise, null is returned.IOExceptionDataSource.getOutputStream(), 
URLDataSourcepublic DataFlavor[] getTransferDataFlavors()
Returns an array of DataFlavor objects indicating the flavors the data can be provided in. The array is usually ordered according to preference for providing the data, from most richly descriptive to least richly descriptive.
 The DataHandler attempts to find a DataContentHandler that
 corresponds to the MIME type of the data. If one is located,
 the DataHandler calls the DataContentHandler's
 getTransferDataFlavors method. 
 If a DataContentHandler can not be located, and if the
 DataHandler was created with a DataSource (or URL), one
 DataFlavor is returned that represents this object's MIME type
 and the java.io.InputStream class.  If the
 DataHandler was created with an object and a MIME type,
 getTransferDataFlavors returns one DataFlavor that represents
 this object's MIME type and the object's class.
getTransferDataFlavors in interface TransferableDataContentHandler.getTransferDataFlavors()public boolean isDataFlavorSupported(DataFlavor flavor)
 This method iterates through the DataFlavors returned from
 getTransferDataFlavors, comparing each with
 the specified flavor.
isDataFlavorSupported in interface Transferableflavor - the requested flavor for the datagetTransferDataFlavors()public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
For DataHandler's created with DataSources or URLs:
 The DataHandler attempts to locate a DataContentHandler
 for this MIME type. If one is found, the passed in DataFlavor
 and the type of the data are passed to its getTransferData
 method. If the DataHandler fails to locate a DataContentHandler
 and the flavor specifies this object's MIME type and the
 java.io.InputStream class, this object's InputStream
 is returned.
 Otherwise it throws an UnsupportedFlavorException. 
For DataHandler's created with Objects:
The DataHandler attempts to locate a DataContentHandler for this MIME type. If one is found, the passed in DataFlavor and the type of the data are passed to its getTransferData method. If the DataHandler fails to locate a DataContentHandler and the flavor specifies this object's MIME type and its class, this DataHandler's referenced object is returned. Otherwise it throws an UnsupportedFlavorException.
getTransferData in interface Transferableflavor - the requested flavor for the dataUnsupportedFlavorException - if the data could not be
                  converted to the requested flavorIOException - if an I/O error occursActivationDataFlavorpublic void setCommandMap(CommandMap commandMap)
null causes the CommandMap to revert
 to the CommandMap returned by the
 CommandMap.getDefaultCommandMap method.
 Changing the CommandMap, or setting it to null,
 clears out any data cached from the previous CommandMap.commandMap - the CommandMap to use in this DataHandlerCommandMap.setDefaultCommandMap(javax.activation.CommandMap)public CommandInfo[] getPreferredCommands()
getPreferredCommands method
 in the CommandMap associated with this instance of DataHandler.
 This method returns an array that represents a subset of
 available commands. In cases where multiple commands for the
 MIME type represented by this DataHandler are present, the
 installed CommandMap chooses the appropriate commands.CommandMap.getPreferredCommands(java.lang.String)public CommandInfo[] getAllCommands()
getAllCommands method
 of the CommandMap associated with this DataHandler.CommandMap.getAllCommands(java.lang.String)public CommandInfo getCommand(String cmdName)
getCommand method
 of the CommandMap associated with this DataHandler.cmdName - the command nameCommandMap.getCommand(java.lang.String, java.lang.String)public Object getContent() throws IOException
If the DataHandler was instantiated with an object, return the object.
 If the DataHandler was instantiated with a DataSource,
 this method uses a DataContentHandler to return the content
 object for the data represented by this DataHandler. If no
 DataContentHandler can be found for the
 the type of this data, the DataHandler returns an
 InputStream for the data.
IOException - if an IOException occurs during
                              this operation.public Object getBean(CommandInfo cmdinfo)
 This method calls the CommandInfo's getCommandObject
 method with the ClassLoader used to load
 the javax.activation.DataHandler class itself.
cmdinfo - the CommandInfo corresponding to a commandpublic static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
If the DataContentHandlerFactory has already been set, this method throws an Error.
newFactory - the DataContentHandlerFactoryError - if the factory has already been defined.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, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.