国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

野馬的性格 Java SE 6.0新特性體驗

2019-11-18 15:27:42
字體:
來源:轉載
供稿:網友

  Mustang(也稱作java SE 6),如今剛進入其第二個測試階段。本文作者將同你進一步探討這個新的發行版本中所提供的許多新的特征(從控制臺I/O和存取權限控制方法到系統托盤API和表格排序和過濾等)。

  一、 引言

  Mustang(也稱作Java SE 6),如今剛進入其第二個測試階段。本文中讓我們一起進一步探討這個新的發行版本中所提供的許多新的特征(從控制臺I/O和存取權限控制方法到系統托盤API和表格排序和過濾等)。

  在分析控制文件和目錄存取許可的若干新的文件方法后,本文將向你展示新的桌面集成API。然后,本文還要分析Mustang的新的編程存取網絡參數的能力。最后,本文將討論表格組件的新的排序與過濾能力。

  【注重】我使用Java SE 6的第二個測試版本(build 86)開發并測試了本文的Java示例應用程序,OS平臺是Windows 98 SE。

  二、 存取權限控制方法

  從某種角度看,File類的一個實例其實是一個標識文件系統中文件或目錄對象的抽象路徑名。文件系統可以限制在這個對象上實現的讀、寫以及執行等操作。

  讀、寫和執行限制統稱為“存取權限”。文件系統可以把多個存取權限集合關聯到單個對象。例如,一個集合可以用于對象的所有者而另一個集合可以用于所有的其他用戶。

  前一個版本中提供的存取權限在直接用于存取對象時,有可能會導致File類的一些方法失敗。由于這個原因,Mustang為File類引入了六種新的方法以便讓你修改路徑名的存取權限:

  ①“public boolean setExecutable(boolean executable, boolean owNeronly)”:設置所有者或每個人對于指定抽象路徑名的執行許可權。當executable為true時,答應執行操作;而傳遞給它的值為false時,則不答應執行。把true傳遞給參數ownerOnly僅答應該抽象路徑名的所有者擁有該許可權;當ownerOnly為false,則把該許可權授予每個人。假如底層文件系統無法區分所有者的執行許可與每個人的執行許可,那么,該許可應用于每個人,而不管ownerOnly取值如何。

  該方法在成功時返回true;否則,返回false。假如用戶無權改變抽象路徑名的存取權限或假如底層文件系統沒有實現一種執行許可并且executable為false,則方法調用失敗。

  ②“public boolean setExecutable(boolean executable)”:這個方法便于設置所有者對于給定抽象路徑名的執行權限。

  ③public oolean setReadable( oolean readable, oolean ownerOnly)”:設置所有者或每個人對于這個抽象路徑名的讀取許可權。參數readable為true時答應讀取操作;否則,不答應讀取。參數ownerOnly為true時僅答應該抽象路徑名的所有者擁有該許可權;當ownerOnly為false,則把該許可權授予每個人。假如底層文件系統無法區分所有者的讀取許可與每個人的讀取許可,那么,該許可應用于每個人,而不管ownerOnly取值如何。

  該方法在成功時返回true;否則,返回false。假如用戶無權改變抽象路徑名的存取權限或假如底層文件系統沒有實現一種讀取許可并且readable為false,則方法調用會失敗。

  ④“public boolean setReadable(boolean readable)”:這個方法便于設置所有者對于給定抽象路徑名的讀取權限。

  ⑤“public boolean setWritable(boolean writable,boolean ownerOnly)”:設置所有者或每個人對于這個抽象路徑名的寫許可權。參數writable為true時答應寫操作;否則,不答應寫操作。參數ownerOnly為true時僅答應該抽象路徑名的所有者擁有該許可權;當ownerOnly為false,則把該許可權授予每個人。假如底層文件系統無法區分所有者的寫許可與每個人的寫許可,那么,該許可應用于每個人,而不管ownerOnly取值如何。

  該方法在成功時這個方法返回true;否則,返回false。假如用戶無權改變抽象路徑名的存取權限,則方法調用會失敗。

  ⑥“public boolean setWritable(boolean writable)”:這個方法便于設置所有者對于給定抽象路徑名的寫權限。

  【注重】假如存在一個安全治理器并且它的“public void checkWrite(String file)”方法不答應對文件進行寫操作的話,則上面列出的每一個方法都會拋出一個SecurityException異常。

  File類還提供了如下對應的方法以幫助你獲得一個對象當前設置的讀、寫和執行權限:

  ①public boolean canRead();

  ②public boolean canWrite();

  ③public boolean canExecute()(在Mustang中新引入的)。

  我創建了一個簡單的展示setWritable()和canWrite()方法用法的名為WritableDemo的應用程序。在這個應用程序中,你能夠使一個文件系統對象可寫或僅能讀取,而且還能查看這一許可的當前設置。本文示例源碼中的列表1完整地展示了這個文件WritableDemo.java(略)。 三、 桌面集成

  Sun的Java桌面開發小組引入了若干新的特征以進一步提高Java在桌面開發領域的影響。其中三個聞名的特征是:Splash屏幕支持(它讓應用程序在啟動過程中顯示Splash屏幕),系統托盤支持(它讓應用程序把圖標,提示窗信息和彈出菜單添加到系統托盤),和一組新的桌面API。

  現在,我們來討論桌面API,它有助于無縫地把Java應用程序與桌面集成到一起。該API支持Java應用程序使用一個特定的統一資源標識符(URI)啟動操作系統的缺省的瀏覽器;啟動OS的缺省的電子郵件客戶端;以及啟動應用程序以打開、編輯或打印與該應用程序相關聯的文件。

  桌面API使用OS的文件關聯機制來啟動關聯到特定的文件類型的應用程序。例如,.doc文件擴展經常與微軟的Word關聯。經由桌面API,一個Java應用程序能夠啟動Word以打開、打印或編輯與這個擴展名相關聯的文件。

  在啟動瀏覽器電子郵件客戶端或任何應用程序之前,你的Java應用程序必須決定你的OS是否支持該API。這一決定是通過調用java.awt.Desktop類的“public static boolean isDesktopSupported()”方法實現的。假如OS支持該API,這個方法返回true;否則,它返回false。

  在調用isDesktopSupported()之后,該應用程序通過調用Desktop的“public static Desktop getDesktop()”方法繼續檢索Desktop對象。假如OS不支持鍵盤輸入、顯示器或鼠標,這個方法將拋出一個java.awt.Headless異常。假如OS不支持該桌面API,則拋出一個UnsupportedOperationException異常。

  現在,既然該Java應用程序已經擁有了一個桌面實例,那么,按下來,它就能夠調用各種方法以瀏覽、發送郵件、打開、編輯或打印。在執行任何這些操作之前,該程序可以調用Desktop的“public boolean isSupported(Desktop.Action action)”方法,假如桌面支持該行為(被描述為適合的Desktop.Action枚舉實例),則這個方法返回true。這些Desktop.Action枚舉如下:

  · BROWSE:這個枚舉實例描述OS的缺省瀏覽器的瀏覽行為。

  · MAIL:這個枚舉實例描述OS的缺省電子郵件客戶端的郵件行為。

  · OPEN:這個枚舉實例描述與打開一個特定的文件類型相關聯的一個應用程序執行的打開行為。

  · EDIT:這個枚舉實例描述與編輯一個特定的文件類型相關聯的一個應用程序執行的編輯行為。

  · PRINT:這個枚舉實例描述與打印一個特定的文件類型相關聯的一個應用程序執行的打印行為。

  【注重】在調用相應行為的Desktop方法前,你不必調用“isSupported(Desktop.Action action)”來決定是否支持該行為:你可以直接調用相應的方法,但是之后,你必須處理該方法潛在地拋出的一個UnsupportedOperationException異常。可以從Desktop存取下列行為方法:

  ①“public void browse(URI uri)”:啟動用戶缺省的瀏覽器以顯示一個URI—假如瀏覽器能夠處理這個URI的話;否則,它啟動該URI缺省的處理器應用程序(這具體要依靠于在java.net.URI類中定義的協議和路徑)。

  假如uri為null,則拋出一個NullPointerException異常。假如用戶的缺省瀏覽器沒有找到或它沒能啟動或缺省的處理器應用程序沒能啟動,則拋出一個java.io.IOException異常。

  ②“public void edit(File file)”:啟動相關聯的編輯器應用程序并且打開一個文件進行編輯。
假如file為null,則拋出一個NullPointerException異常。假如指定的文件不存在,則拋出一個IllegalArgumentException異常。最后,假如指定的文件相關聯的應用程序沒能啟動,或這個文件沒有相關聯的編輯器,則拋出一個IOException異常。

  ③“public void mail()”:啟動用戶缺省的電子郵件客戶端的郵件編輯窗口。

  假如用戶缺省的電子郵件客戶端沒有發現或啟動失敗,則拋出一個IOException異常。

  ④“public void mail(URI mailtoURI)”:啟動用戶缺省的電子郵件客戶端的郵件編輯窗口,填充由一個“mailto:”URI指定的消息域。這個URI能夠指定包括“cc”,“subject”和“body”在內的各種消息域。

  假如mailtoURI為null,則拋出一個NullPointerException異常。假如URI的模式不是mailto,則拋出一個IllegalArgumentException異常。假如用戶缺省的電子郵件客戶端沒有發現或啟動失敗,則拋出一個IOException異常。

  ⑤“public void open(File file)”:啟動相關聯的應用程序以打開該文件。假如指定的文件是一個目錄,則啟動OS的文件治理器以打開它。

  假如file為 null,則拋出一個NullPointerException異常。假如指定的文件不存在,則拋出一個IllegalArgumentException異常。最后,假如該指定的文件沒有相關聯的應用程序,或假如這個應用程序沒能啟動,則拋出一個IOException異常。

  ⑥“public void print(File file)”:使用相關聯的應用程序的打印命令并使用本地桌面打印設備打印一個文件。

  假如file為null,則拋出一個NullPointerException異常。假如指定的文件不存在,則拋出一個IllegalArgumentException異常。假如指定的文件沒有相關聯的能夠用于打印其內容的應用程序,則拋出一個IOException異常。

  【注重】假如一個安全治理器存在并且不答應執行要求的行為的話,上面列出的每一個方法都會拋出一個SecurityException異常。

  為此,我創建了一個展示桌面API用法的DesktopDemo應用程序。這個應用程序創建了一個包含一系列瀏覽,郵件,打開,編輯,和打印等單選按鈕的GUI界面;還有一個文本域用于輸入一個URI或文件名。在輸入一個URI或文件名之后,點擊適當的按鈕便可以從桌面上啟動一個應用程序。本文示例源碼中的列表2展示了這個文件DesktopDemo.java(略)。

  在編譯和運行DesktopDemo后,在文本域輸入一個文件名并點擊Open,Edit或Print中的一個按鈕以啟動該文件相應的應用程序。或輸入一個URI并點擊“Browse”或“Mail”。圖1展示了我已經在文本域中輸入了一個郵件URI的屏幕快照。

野馬的性格 Java SE 6.0新特性體驗(圖一)
圖1.在此,當輸入一個郵件URI時,我沒有指定“mailto:”前綴,因為我的電子郵件客戶端把這個前綴自動地加入到郵件編輯窗口中的接收者的電子郵件地址的前面。

  這個郵件URI僅包含接收者的電子郵件地址和一個主題。當然,我也可以包括正文文本,這可以通過添加“&BODY=”,其后面再跟著一些文本的方法實現。在點擊“Mail”單選按鈕后,我的電子郵件客戶端的郵件編輯窗口中將在正確位置顯示接收者的電子郵件地址和主題,如圖2所示。

野馬的性格 Java SE 6.0新特性體驗(圖二)
圖2.這里所提供的郵件URI還能夠指定除主要接收者的電子郵件地址外的其它郵件地址。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 确山县| 册亨县| 隆子县| 嘉峪关市| 建宁县| 镇宁| 邹平县| 灵宝市| 交口县| 论坛| 海城市| 大名县| 安达市| 永胜县| 西青区| 秦安县| 永兴县| 龙游县| 田林县| 九寨沟县| 揭西县| 湟源县| 竹北市| 连江县| 南昌市| 萨嘎县| 罗平县| 囊谦县| 揭阳市| 禹州市| 镇安县| 大邑县| 庆城县| 惠来县| 和顺县| 巴楚县| 教育| 鹤岗市| 福建省| 龙门县| 资源县|