IOS創建目錄接口createDirectoryAtPath:withIntermediateDirectories:中參數attributes的設置


        在應用程序執行時,經常需要本地化保存一些重要的數據,這時就有可能需要創建一些目錄。Objective-C提供了一個非常強大的創建目錄的接口:

- ( BOOL )createDirectoryAtPath:( NSString  *)path withIntermediateDirectories:( BOOL )createIntermediates attributes:( NSDictionary  *)attributes error:( NSError  **)error;

   很多人使用這個接口時,往往將attributes參數設置為nil,這樣雖然能夠創建出目錄,但是在一些特殊場景下(比如iPhone的apps)所創建的目錄的屬性往往不是我們期望的,因而導致目錄的讀寫失敗等問題。其實通過設置attributes參數,這個接口可以完成我們的期望。

      根據蘋果官方文檔介紹,這個參數可以設置所創建目錄所屬的用戶和用戶組,目錄的訪問權限和修改時間等。如果設置為nil,那么所創建目錄的屬性則采用系統默認設置,一般會將目錄的用戶設置為root,訪問權限設置為0755,這樣就導致其他用戶向這個目錄寫入時失敗。

      attributes參數是一個字典類型。查看蘋果官方文檔的介紹,可以看到在NSFileManager.h頭文件定義了很多常量字符串,用於作為attributes字典的鍵,針對於這個接口的鍵主要包括下面幾個:

NSString  * const  NSFileType ;
NSString  * const  NSFileSize ;
NSString  * const  NSFileModificationDate ;
NSString  * const  NSFileReferenceCount ;
NSString  * const  NSFileDeviceIdentifier ;
NSString  * const  NSFileOwnerAccountName ;
NSString  * const  NSFileGroupOwnerAccountName ;
NSString  * const  NSFilePosixPermissions ;
NSString  * const  NSFileSystemNumber ;
NSString  * const  NSFileSystemFileNumber ;
NSString  * const  NSFileExtensionHidden ;
NSString  * const  NSFileHFSCreatorCode ;
NSString  * const  NSFileHFSTypeCode ;
NSString  * const  NSFileImmutable ;
NSString  * const  NSFileAppendOnly ;
NSString  * const  NSFileCreationDate ;
NSString  * const  NSFileOwnerAccountID ;
NSString  * const  NSFileGroupOwnerAccountID ;
NSString  * const  NSFileBusy ;

      本文不打算翻譯蘋果的官方文檔,只把我們比較關心的幾個鍵的意義說明如下:

  • NSFileAppendOnly

      這個鍵的值需要設置為一個表示布爾值的NSNumber對象,表示創建的目錄是否是只讀的。

  • NSFileCreationDate

      這個鍵的值需要設置為一個NSDate對象,表示目錄的創建時間。

  • NSFileOwnerAccountName

      這個鍵的值需要設置為一個NSString對象,表示這個目錄的所有者的名字。

  • NSFileGroupOwnerAccountName

      這個鍵的值需要設置為一個NSString對象,表示這個目錄的用戶組的名字。

  • NSFileGroupOwnerAccountID

      這個鍵的值需要設置為一個表示unsigned int的NSNumber對象,表示目錄的組ID。

  • NSFileModificationDate

      這個鍵的值需要設置一個NSDate對象,表示目錄的修改時間。

  • NSFileOwnerAccountID

      這個鍵的值需要設置為一個表示unsigned int的NSNumber對象,表示目錄的所有者ID。

  • NSFilePosixPermissions

      這個鍵的值需要設置為一個表示short int的NSNumber對象,表示目錄的訪問權限。

  • NSFileReferenceCount

      這個鍵的值需要設置為一個表示unsigned long的NSNumber對象,表示目錄的引用計數,即這個目錄的硬鏈接數。

      這樣,通過合理的設計attributes字典中的不同鍵的值,這個接口所創建的目錄的屬性就會基本滿足我們的需求了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM