野馬的性格JavaSE6.0新特性體驗

推薦:Java初學者專區
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(略)。