LogicalFile
LogicalFile 是一個 interface。 邏輯檔案元件會依據它提供的 LogicalFileLocation / SubPath 等資訊,以決定實際檔案位置。 UdeFile 是檔案元件提供的基本實作,各專案也可以依需求客制化自己的 FILE 類別,以提供更多檔案定址功能檔案元件。
UdeFile
在程式中建立邏輯檔案,必須利用 LogicalFileLocation 介面指定「邏輯根目錄」。
// 以 LogicalFileLocation 建立
LogicalFile(LogicalFileLocation) // 等效於 LogicalFile(LogicalFileLocation, “”)
LogicalFile(LogicalFileLocation, subPath)
LogicalFile(LogicalFileLocation, subPath, timestamp)
LogicalFile(LogicalFileLocation, subPath, timestamp, tag)
LogicalFile(LogicalFileLocation, subPath, tag)
// 以parent folder 建立
LogicalFile(LogicalFile, name)
記錄 LogicalFile 資訊
在程式中建立 LogicalFile 後,若日後要存取到相同路徑,建議用 getLogicalPath() 取得參考路徑表示式,並存放到其它記錄媒介,如資料庫欄位,尤其是路徑定義中,有引用「時間戳記」時。不然就必須自行記錄相關參數,以重建 LogicalFile 物件。
參考路徑的格式為「$location:$timestamp:$tag:$subpath」。可使用 UdeFile 的靜態方法 fromLogicalPath (String logicalPath) 將參考路徑轉回 LogicalFile 物件。
如果專案有客制化自己的 LogicalFile 類別,則應當實作 getLogicalPath() 及 定義自己的靜態方法 fromLogicalPath。
優點
相比記錄檔案的實體路徑於資料庫,記錄參考路徑較具可移植性,可免除因重新規劃檔案系統而必須轉換DB資料的問題。 也避免萬一資料庫被入侵攻擊時,檔案實體路徑被指向到不應外露的系統檔案位置。
相依檔案
同 UdeFileUtils 所提供的檔案函式,也可透過 LogicalFile 建立相關的檔案物件。
// 原始檔案沒有附檔名時,會自動加上 .
LogicalFile appendExtName(String);
// 原始檔案沒有附檔名時,會自動加上 .
LogicalFile asExtName(String);
// 在主檔名尾端加上後綴文字。
LogicalFile asSuffix(String);
// 上層 Folder, 若為 Location 所定義位置,
// 則抛出 UDE0216E("目前檔案已是邏輯路徑主目錄")
LogicalFile getParent();
// 建立子檔案
LogicalFile subFile(String);