JavaTM 2 Platform
Standard Ed. 6

javax.activation
類別 DataHandler

java.lang.Object
  繼承者 javax.activation.DataHandler
所有已實作的介面:
Transferable

public class DataHandler
extends Object
implements Transferable

DataHandler 類別為在多種不同源和格式下可用的資料提供一致的介面。它使用 DataContentHandler 管理簡單串流到字元串的轉換以及相關操作。它提供對能夠操作資料的命令的存取。使用 CommandMap 可以找到這些命令。

DataHandler 和 Transferable 介面

DataHandler 實作 Transferable 介面,以便資料能夠用於 AWT 資料傳輸操作,比如,剪切、粘貼和拖放操作。Transferable 介面的實作依賴於已安裝的 DataContentHandler 物件的可用性,該 DataContentHandler 物件與 DataHandler 的特定實例中所表示的資料的 MIME 型別相對應。

DataHandler 和 CommandMap

DataHandler 追蹤當前 CommandMap,它用於命令(getCommandgetAllCommandsgetPreferredCommands)的服務請求。使用 setCommandMap 方法,DataHandler 的每個實例都可以有一個與其相關的 CommandMap。如果沒有設置 CommandMap,則 DataHandler 調用 CommandMap 中的 getDefaultCommandMap 方法,並使用其返回值。有關更多資訊,請參見 CommandMap

DataHandler 和 URL

當用 URL 建構 DataHandler 時,當前 DataHandler 實作創建一個 URLDataSource 的私有實例。

從以下版本開始:
1.6
另請參見:
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()
          以其首選 Object 的形式返回資料。
 String getContentType()
          返回從源物件中獲取的此物件的 MIME 型別。
 DataSource getDataSource()
          返回與此 DataHandler 實例關聯的 DataSource。
 InputStream getInputStream()
          獲取此物件的 InputSteam。
 String getName()
          返回資料物件的名稱。
 OutputStream getOutputStream()
          獲取此 DataHandler 的 OutputStream,以允許覆寫底層資料。
 CommandInfo[] getPreferredCommands()
          返回此資料型別的首選 命令。
 Object getTransferData(DataFlavor flavor)
          返回一個物件,該物件表示要傳輸的資料。
 DataFlavor[] getTransferDataFlavors()
          返回此資料在其中可用的 DataFlavor。
 boolean isDataFlavorSupported(DataFlavor flavor)
          返回此物件是否支持指定的資料 flavor。
 void setCommandMap(CommandMap commandMap)
          設置此 DataHandler 使用的 CommandMap。
static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
          設置 DataContentHandlerFactory。
 void writeTo(OutputStream os)
          將資料寫入 OutputStream
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

DataHandler

public DataHandler(DataSource ds)
創建參考指定 DataSource 的 DataHandler 實例。資料以位元組串流的形式存在。DataSource 將提供一個 InputStream 來存取資料。

參數:
ds - DataSource

DataHandler

public DataHandler(Object obj,
                   String mimeType)
創建表示此 MIME 型別物件的 DataHandler 實例。當應用程序已經有 Java Object 形式的資料記憶體表示形式 (in-memory representation) 時,使用此建構子。

參數:
obj - Java Object
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。對於沒有用 DataSource 實例化的 DataHandler,為其創建的 DataSource 將被快取記憶體,以提高性能。

返回:
對此 DataHandler 有效的 DataSource 物件

getName

public String getName()
返回資料物件的名稱。如果此 DataHandler 是用 DataSource 創建的,則此方法直接調用 DataSource.getName 方法;否則返回 null

返回:
物件的名稱

getContentType

public String getContentType()
返回從源物件中獲取的此物件的 MIME 型別。注意,這是帶有參數的完整 型別。

返回:
MIME 型別

getInputStream

public InputStream getInputStream()
                           throws IOException
獲取此物件的 InputSteam。

對於用 DataSource 實例化的 DataHandler,該 DataHandler 調用 DataSource.getInputStream 方法,並將結果返回給調用者。

對於用 Object 實例化的 DataHandler,該 DataHandler 首先嘗試找到 Object 的 DataContentHandler。如果 DataHandler 找不到此 MIME 型別的 DataContentHandler,則拋出 UnsupportedDataTypeException。如果能夠找到,則它將創建一個管道和一個執行緒。該執行緒使用 DataContentHandler 的 writeTo 方法將串流資料寫入管道的一端。管道的另一端返回給調用者。由於為複製資料創建了一個執行緒,所以在複製過程中發生的 IOException 不能傳送回調用者。結果將是一個空串流。

返回:
表示此資料的 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 是用 Object 創建的,則 writeTo 獲取物件型別的 DataContentHandler。如果找到了 DataContentHandler,則它對 DataContentHandler 調用 writeTo 方法。

參數:
os - 要寫入的 OutputStream
拋出:
IOException - 如果發生 I/O 錯誤

getOutputStream

public OutputStream getOutputStream()
                             throws IOException
獲取此 DataHandler 的 OutputStream,以允許覆寫底層資料。如果 DataHandler 是用 DataSource 創建的,則調用 DataSource 的 getOutputStream 方法。否則,返回 null

返回:
OutputStream
拋出:
IOException
另請參見:
DataSource.getOutputStream(), URLDataSource

getTransferDataFlavors

public DataFlavor[] getTransferDataFlavors()
返回此資料在其中可用的 DataFlavor。

返回能夠提供資料的 flavor 的 DataFlavor 物件所組成的陣列。該陣列通常根據提供資料的首選項來排序(從描述最多的到描述最少的)。

DataHandler 嘗試尋找與資料的 MIME 型別對應的 DataContentHandler。如果找到,則該 DataHandler 調用 DataContentHandler 的 getTransferDataFlavors 方法。

如果 能找到 DataContentHandler,並且 DataHandler 是用 DataSource (或 URL)創建的,則返回一個表示此物件 MIME 型別和 java.io.InputStream 類別的 DataFlavor。如果 DataHandler 是用物件和 MIME 型別創建的,則 getTransferDataFlavors 返回一個表示此物件 MIME 型別和物件類別的 DataFlavor。

指定者:
介面 Transferable 中的 getTransferDataFlavors
返回:
其中可以傳輸此資料的資料 flavor 所組成的陣列
另請參見:
DataContentHandler.getTransferDataFlavors()

isDataFlavorSupported

public boolean isDataFlavorSupported(DataFlavor flavor)
返回此物件是否支持指定的資料 flavor。

此方法迭代 getTransferDataFlavors 返回的 DataFlavor,將每個 DataFlavor 與指定 flavor 進行比較。

指定者:
介面 Transferable 中的 isDataFlavorSupported
參數:
flavor - 為資料所請求的 flavor
返回:
如果支持該資料 flavor,則返回 true
另請參見:
getTransferDataFlavors()

getTransferData

public Object getTransferData(DataFlavor flavor)
                       throws UnsupportedFlavorException,
                              IOException
返回一個物件,該物件表示要傳輸的資料。返回物件的類別是由該資料 flavor 的表示形式類別定義的。

對於用 DataSource 或 URL 創建的 DataHandler:

DataHandler 嘗試為此 MIME 型別尋找一個 DataContentHandler。如果找到,則將傳入的 DataFlavor 和資料的型別傳遞給其 getTransferData 方法。如果 DataHandler 沒有找到 DataContentHandler,並且 flavor 指定了此物件的 MIME 型別和 java.io.InputStream 類別,則返回此物件的 InputStream。否則,拋出 UnsupportedFlavorException。

對於用 Object 創建的 DataHandler:

DataHandler 嘗試為此 MIME 型別尋找一個 DataContentHandler。如果找到,則將傳入的 DataFlavor 和資料的型別傳遞給其 getTransferData 方法。如果 DataHandler 沒有找到 DataContentHandler,並且 flavor 指定了此物件的 MIME 型別和它的類別,則返回此 DataHandler 的參考物件。否則,拋出 UnsupportedFlavorException。

指定者:
介面 Transferable 中的 getTransferData
參數:
flavor - 為資料所請求的 flavor
返回:
物件
拋出:
UnsupportedFlavorException - 如果不能將該資料轉換為所請求的 flavor
IOException - 如果發生 I/O 錯誤
另請參見:
ActivationDataFlavor

setCommandMap

public void setCommandMap(CommandMap commandMap)
設置此 DataHandler 使用的 CommandMap。將其設置為 null 會使該 CommandMap 還原為 CommandMap.getDefaultCommandMap 方法所返回的 CommandMap。更改該 CommandMap 或將其設置為 null 將清除以前的 CommandMap 所快取記憶體的所有資料。

參數:
commandMap - 此 DataHandler 中使用的 CommandMap
另請參見:
CommandMap.setDefaultCommandMap(javax.activation.CommandMap)

getPreferredCommands

public CommandInfo[] getPreferredCommands()
返回此資料型別的首選 命令。此方法調用 CommandMap 中與此 DataHandler 實例關聯的 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
以其首選 Object 的形式返回資料。

如果 DataHandler 是用一個物件實例化的,則返回該物件。

如果 DataHandler 是用 DataSource 實例化的,則此方法使用 DataContentHandler 返回此 DataHandler 所表示資料的內容物件。如果找不到此資料型別的 DataContentHandler,則 DataHandler 返回資料的 InputStream。

返回:
內容。
拋出:
IOException - 如果此操作中發生 IOException。

getBean

public Object getBean(CommandInfo cmdinfo)
一個便捷方法,它接受 CommandInfo 物件並且實例化相應的命令,通常是 JavaBean 元件。

此方法調用 CommandInfo 的 getCommandObject 方法,帶有用於載入 javax.activation.DataHandler 類別本身的 ClassLoader

參數:
cmdinfo - 與命令對應的 CommandInfo
返回:
已實例化的命令物件

setDataContentHandlerFactory

public static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
設置 DataContentHandlerFactory。首先調用 DataContentHandlerFactory 來尋找 DataContentHandler。DataContentHandlerFactory 只能被設置一次。

如果 DataContentHandlerFactory 已經被設置,則此方法拋出 Error。

參數:
newFactory - DataContentHandlerFactory
拋出:
Error - 如果處理器已經被定義。
另請參見:
DataContentHandlerFactory

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only