|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.activation.DataHandler
public class DataHandler
DataHandler 類別為在多種不同源和格式下可用的資料提供一致的介面。它使用 DataContentHandler 管理簡單串流到字元串的轉換以及相關操作。它提供對能夠操作資料的命令的存取。使用 CommandMap 可以找到這些命令。
DataHandler 和 Transferable 介面
DataHandler 實作 Transferable 介面,以便資料能夠用於 AWT 資料傳輸操作,比如,剪切、粘貼和拖放操作。Transferable 介面的實作依賴於已安裝的 DataContentHandler 物件的可用性,該 DataContentHandler 物件與 DataHandler 的特定實例中所表示的資料的 MIME 型別相對應。
DataHandler 和 CommandMap
DataHandler 追蹤當前 CommandMap,它用於命令(getCommand
、getAllCommands
、getPreferredCommands
)的服務請求。使用 setCommandMap
方法,DataHandler 的每個實例都可以有一個與其相關的 CommandMap。如果沒有設置 CommandMap,則 DataHandler 調用 CommandMap 中的 getDefaultCommandMap
方法,並使用其返回值。有關更多資訊,請參見 CommandMap。
DataHandler 和 URL
當用 URL 建構 DataHandler 時,當前 DataHandler 實作創建一個 URLDataSource 的私有實例。
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 |
建構子詳細資訊 |
---|
public DataHandler(DataSource ds)
DataHandler
實例。資料以位元組串流的形式存在。DataSource 將提供一個 InputStream 來存取資料。
ds
- DataSourcepublic DataHandler(Object obj, String mimeType)
DataHandler
實例。當應用程序已經有 Java Object 形式的資料記憶體表示形式 (in-memory representation) 時,使用此建構子。
obj
- Java ObjectmimeType
- 物件的 MIME 型別public DataHandler(URL url)
DataHandler
實例。DataHandler 在內部創建一個 URLDataSource
實例來表示 URL。
url
- URL 物件方法詳細資訊 |
---|
public DataSource getDataSource()
對於已經用 DataSource 實例化的 DataHandler,此方法返回用來創建該 DataHandler 物件的 DataSource。在其他情況下,DataHandler 根據用來建構 DataHandler 的資料建構 DataSource。對於沒有用 DataSource 實例化的 DataHandler,為其創建的 DataSource 將被快取記憶體,以提高性能。
public String getName()
DataSource.getName
方法;否則返回 null。
public String getContentType()
public InputStream getInputStream() throws IOException
對於用 DataSource 實例化的 DataHandler,該 DataHandler 調用 DataSource.getInputStream
方法,並將結果返回給調用者。
對於用 Object 實例化的 DataHandler,該 DataHandler 首先嘗試找到 Object 的 DataContentHandler。如果 DataHandler 找不到此 MIME 型別的 DataContentHandler,則拋出 UnsupportedDataTypeException。如果能夠找到,則它將創建一個管道和一個執行緒。該執行緒使用 DataContentHandler 的 writeTo
方法將串流資料寫入管道的一端。管道的另一端返回給調用者。由於為複製資料創建了一個執行緒,所以在複製過程中發生的 IOException 不能傳送回調用者。結果將是一個空串流。
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 是用 Object 創建的,則 writeTo 獲取物件型別的 DataContentHandler。如果找到了 DataContentHandler,則它對 DataContentHandler
調用 writeTo
方法。
os
- 要寫入的 OutputStream
IOException
- 如果發生 I/O 錯誤public OutputStream getOutputStream() throws IOException
getOutputStream
方法。否則,返回 null
。
IOException
DataSource.getOutputStream()
,
URLDataSource
public DataFlavor[] getTransferDataFlavors()
返回能夠提供資料的 flavor 的 DataFlavor 物件所組成的陣列。該陣列通常根據提供資料的首選項來排序(從描述最多的到描述最少的)。
DataHandler 嘗試尋找與資料的 MIME 型別對應的 DataContentHandler。如果找到,則該 DataHandler 調用 DataContentHandler 的 getTransferDataFlavors
方法。
如果不 能找到 DataContentHandler,並且 DataHandler 是用 DataSource (或 URL)創建的,則返回一個表示此物件 MIME 型別和 java.io.InputStream
類別的 DataFlavor。如果 DataHandler 是用物件和 MIME 型別創建的,則 getTransferDataFlavors 返回一個表示此物件 MIME 型別和物件類別的 DataFlavor。
Transferable
中的 getTransferDataFlavors
DataContentHandler.getTransferDataFlavors()
public boolean isDataFlavorSupported(DataFlavor flavor)
此方法迭代 getTransferDataFlavors
返回的 DataFlavor,將每個 DataFlavor 與指定 flavor 進行比較。
Transferable
中的 isDataFlavorSupported
flavor
- 為資料所請求的 flavor
getTransferDataFlavors()
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
對於用 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
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)
此方法調用 CommandInfo 的 getCommandObject
方法,帶有用於載入 javax.activation.DataHandler
類別本身的 ClassLoader
。
cmdinfo
- 與命令對應的 CommandInfo
public static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
如果 DataContentHandlerFactory 已經被設置,則此方法拋出 Error。
newFactory
- DataContentHandlerFactory
Error
- 如果處理器已經被定義。DataContentHandlerFactory
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。