public class DataHandler extends Object implements Transferable
DataHandlerとTransferableインタフェース
DataHandlerは、Transferableインタフェースを実装して、カット・アンド・ペーストやドラッグ・アンド・ドロップなどのAWTデータ転送操作にデータを使用できるようにします。 Transferableインタフェースの実装は、DataHandlerの特定のインスタンスで表現されたデータのMIMEタイプに対応する、インストール済みのDataContentHandlerオブジェクトの可用性に依存します。
DataHandlerとCommandMap
DataHandlerは、コマンドに関する要求(getCommand
、getAllCommands
、getPreferredCommands
)を処理するために使用する現在のCommandMapを追跡します。 DataHandlerの各インスタンスには、setCommandMap
メソッドによってCommandMapが関連付けられている場合があります。 CommandMapが設定されていない場合は、CommandMapのgetDefaultCommandMap
メソッドを呼び出して、それが返す値を使用します。 詳細は、CommandMapを参照してください。
DataHandlerとURL
現在のDataHandlerの実装では、DataHandlerがURLを使って構築されると、URLDataSourceのprivateインスタンスを作成します。
CommandMap
、DataContentHandler
、DataSource
、URLDataSource
コンストラクタ | 説明 |
---|---|
DataHandler(DataSource ds) |
指定されたDataSourceを参照する
DataHandler インスタンスを作成します。 |
DataHandler(Object obj, String mimeType) |
このMIMEタイプのオブジェクトを表す
DataHandler インスタンスを作成します。 |
DataHandler(URL url) |
URLを参照する
DataHandler インスタンスを作成します。 |
修飾子と型 | メソッド | 説明 |
---|---|---|
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() |
このデータが利用できるDataFlavorを返します。
|
boolean |
isDataFlavorSupported(DataFlavor flavor) |
指定されたデータ・フレーバが、このオブジェクトに対してサポートされているかどうかを返します。
|
void |
setCommandMap(CommandMap commandMap) |
このDataHandlerが使用するCommandMapを設定します。
|
static void |
setDataContentHandlerFactory(DataContentHandlerFactory newFactory) |
DataContentHandlerFactoryを設定します。
|
void |
writeTo(OutputStream os) |
データを
OutputStream に書き込みます。 |
public DataHandler(DataSource ds)
DataHandler
インスタンスを作成します。 データは、バイト・ストリーム形式で格納されています。 DataSourceは、データにアクセスするためのInputStreamを提供します。 ds
- DataSourcepublic DataHandler(Object obj, String mimeType)
DataHandler
インスタンスを作成します。 このコンストラクタは、アプリケーションがメモリー上にJavaオブジェクト形式のデータ表現をすでに持っている場合に使用します。 obj
- JavaオブジェクトmimeType
- オブジェクトのMIMEタイプpublic DataHandler(URL url)
DataHandler
インスタンスを作成します。 DataHandlerは、URLを表すためにURLDataSource
インスタンスを内部的に作成します。 url
- URLオブジェクトpublic DataSource getDataSource()
DataHandlerがDataSourceを使ってインスタンス化された場合、このメソッドはDataHandlerオブジェクトの作成に使われたDataSourceを返します。 それ以外の場合、DataHandlerはDataHandlerの構築に使われたデータからDataSourceを構築します。 DataSourceを使ってインスタンス化されていない DataHandler用に作成されたDataSourceは、パフォーマンス上の理由でキャッシュに格納されます。
public String getName()
DataSource.getName
メソッドを呼び出します。そうでない場合は、nullを返します。 public String getContentType()
public InputStream getInputStream() throws IOException
DataHandlerがDataSourceを使ってインスタンス化された場合、DataHandlerはDataSource.getInputStream
メソッドを呼び出し、その結果を呼出し側に返します。
DataHandlerがオブジェクトを使ってインスタンス化された場合、DataHandlerはまずそのオブジェクトのDataContentHandlerを捜し出そうとします。 このMIMEタイプのDataContentHandlerが見つからない場合は、UnsupportedDataTypeExceptionをスローします。 見つかった場合は、パイプとスレッドを作成します。 スレッドはDataContentHandlerのwriteTo
メソッドを使って、ストリーム・データをパイプの一端に書き込みます。 パイプのもう一端は、呼出し側に返されます。 データをコピーするためにスレッドが作成されるため、コピー時に発生するIOExceptionが呼出し側に送り返されないことがあります。 この場合は、空のストリームが返されます。
IOException
- 入出力エラーが発生した場合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が見つかると、DataContentHandler
のwriteTo
メソッドを呼び出します。
os
- 書込み先のOutputStreamIOException
- 入出力エラーが発生した場合public OutputStream getOutputStream() throws IOException
getOutputStream
メソッドが呼び出されます。 それ以外の場合はnull
が返されます。 IOException
DataSource.getOutputStream()
, URLDataSource
public DataFlavor[] getTransferDataFlavors()
データを提供することができるフレーバを示すDataFlavorオブジェクトの配列を返します。 配列は通常、データ提供のための優先設定に従って、もっとも詳しく記述されているものから、そうでないものへ順序付けされます。
DataHandlerは、データのMIMEタイプに対応するDataContentHandlerを捜し出そうとします。 見つかった場合は、そのDataContentHandlerのgetTransferDataFlavors
メソッドを呼び出します。
DataContentHandlerが見つからない場合や、DataHandlerがDataSource (またはURL)を使って作成された場合は、このオブジェクトのMIMEタイプとjava.io.InputStream
クラスを表すDataFlavorが1つ返されます。 DataHandlerがオブジェクトとMIMEタイプを使って作成された場合は、このオブジェクトのMIMEタイプとクラスを表すDataFlavorが返されます。
getTransferDataFlavors
、インタフェースTransferable
DataContentHandler.getTransferDataFlavors()
public boolean isDataFlavorSupported(DataFlavor flavor)
このメソッドは、getTransferDataFlavors
から返される各DataFlavorを指定のフレーバと比較します。
isDataFlavorSupported
、インタフェースTransferable
flavor
- データに対して要求されたフレーバgetTransferDataFlavors()
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
DataHandlerがDataSourceまたはURLを使って作成された場合
DataHandlerは、このMIMEタイプのDataContentHandlerを見つけようとします。 見つかった場合は、渡されたDataFlavorとデータのタイプがそのgetTransferData
メソッドに渡されます。 DataContentHandlerが見つからない場合は、フレーバにこのオブジェクトのMIMEタイプとjava.io.InputStream
クラスが指定されていれば、このオブジェクトのInputStreamが返されます。 指定されていない場合は、UnsupportedFlavorExceptionがスローされます。
DataHandlerがオブジェクトを使って作成された場合
DataHandlerは、このMIMEタイプのDataContentHandlerを見つけようとします。 見つかった場合は、渡されたDataFlavorとデータのタイプがそのgetTransferDataメソッドに渡されます。 DataContentHandlerが見つからない場合は、フレーバにこのオブジェクトのMIMEタイプとクラスが指定されていれば、このDataHandlerが参照したオブジェクトが返されます。 指定されていない場合は、UnsupportedFlavorExceptionがスローされます。
getTransferData
、インタフェースTransferable
flavor
- データに対して要求されたフレーバUnsupportedFlavorException
- データが要求されたフレーバに変換されなかった場合IOException
- 入出力エラーが発生した場合ActivationDataFlavor
public void setCommandMap(CommandMap commandMap)
null
に設定すると、CommandMapはCommandMap.getDefaultCommandMap
メソッドによって返されるCommandMapに戻されます。 CommandMapを変更したり、それをnull
に設定したりすると、以前のCommandMapにキャッシュされていたデータはすべてクリアされます。 commandMap
- このDataHandlerで使用するCommandMapCommandMap.setDefaultCommandMap(javax.activation.CommandMap)
public CommandInfo[] getPreferredCommands()
getPreferredCommands
メソッドを呼び出します。 このメソッドは、利用できるコマンドのサブセットを表す配列を返します。 この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)
このメソッドは、javax.activation.DataHandler
クラス自体のロードに使用されたClassLoader
を使って、CommandInfoのgetCommandObject
メソッドを呼び出します。
cmdinfo
- コマンドに対応するCommandInfopublic static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
DataContentHandlerFactoryがすでに設定されている場合は、Errorがスローされます。
newFactory
- DataContentHandlerFactoryError
- ファクトリがすでに定義されている場合。DataContentHandlerFactory
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。