日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之文件管理

發布時間:2024/5/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS之文件管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

沙盒

  • iOS的沙盒機制
    1、iOS的應用程序只能對自己創建的文件系統讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它一般存放著程序包文件(可執行文件)、圖片、音頻、視頻、plist文件、sqlite數據庫以及其他文件;
    2、每個應用程序都有自己的獨立的存儲空間(沙盒);
    3、一般來說,應用程序之間是不可以互相訪問沙盒的;
    4、模擬器的沙盒位置路徑:/User/userName/Library/Application Support/iPhone Simulator

  • 沙盒的構成:當創建應用程序的時候,在每個沙盒中都含有三個文件,分別是Document、Library和temp。
    1、Document:一般需要持久的數據都放在此目錄中,可以在當中添加子文件夾,iTunes備份和恢復的時候,會包括此目錄;
    2、Library:設置程序的默認設置和其他的狀態;
    3、temp:創建臨時文件的目錄,當iOS設備重啟時,文件會被自動清除。

  • 獲取沙盒的目錄

.h文件 #import <Foundation/Foundation.h>@interface YDWSandBoxPath : NSObject// 獲取沙盒Document文件目錄 + (NSString *)getDocumentDirectory;// 獲取沙河Library文件目錄 + (NSString *)getLibraryDirectory;// 獲取沙盒Library/Caches文件目錄 + (NSString *)getCacheDirectory;// 獲取沙盒Preference文件目錄 + (NSString *)getPreferencePanesDirectory;//獲取沙盒tmp文件目錄 + (NSString *)getTmpDirectory;@end.m文件 #import "YDWSandBoxPath.h"@implementation YDWSandBoxPath+ (NSString *)getDocumentDirectory {return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; }+ (NSString *)getLibraryDirectory {return [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]; }+ (NSString *)getCacheDirectory {return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; }+ (NSString *)getPreferencePanesDirectory {return [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject]; }+ (NSString *)getTmpDirectory {return NSTemporaryDirectory(); }@end
  • 清除緩存:在開發的過程中,遇到有用的數據,會進行緩存,當該數據不需要時,可以清除。在這里整理了幾個方法,統計文件的大小,清除指定文件,清除指定目錄下的全部文件等。
// 根據路徑返回目錄或文件的大小 + (double)sizeWithFilePath:(NSString *)path {// 獲取文件的管理者NSFileManager *manager = [NSFileManager defaultManager];// 檢測路徑的合理性BOOL direct = NO;BOOL exits = [manager fileExistsAtPath:path isDirectory:&direct];if (!exits) {return 0;}if (direct) {NSArray *subPaths = [manager subpathsAtPath:path];int totalSize = 0;for (NSString *subPath in subPaths) {NSString *fullSubPath = [path stringByAppendingPathComponent:subPath];BOOL dir = NO;[manager fileExistsAtPath:path isDirectory:&dir];if (!dir) {NSDictionary *attrs = [manager attributesOfItemAtPath:fullSubPath error:nil];totalSize += [attrs[NSFileSize] integerValue];}}return totalSize/(1024*1024.0);} else {NSDictionary *attrs = [manager attributesOfItemAtPath:path error:nil];return [attrs[NSFileSize] intValue]/(1024*1024.0);} }// 得到指定目錄下的所有文件 + (NSArray *)getAllFileNames:(NSString *)dirPath {return [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dirPath error:nil]; }// 刪除指定目錄或文件 + (BOOL)clearCacheWithFilePath:(NSString *)path {return [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; }// 清空指定目錄下文件 + (BOOL)clearCacheFormDirectoryPath:(NSString *)dirPath {NSArray *fileArray = [YDWSandBoxPath getAllFileNames:dirPath];BOOL flag = NO;for (NSString *fileName in fileArray) {NSString *filePath = [dirPath stringByAppendingPathComponent:fileName];flag = [YDWSandBoxPath clearCacheWithFilePath:filePath];if (!flag) {break;}}return flag; }

NSData

  • NSData存儲的是二進制數據,屏蔽了數據之間的差異,文本、音頻、圖像等數據都可用NSData來存儲;
  • NSData的用法:
    1、NSString與NSData互相轉換
    NSData --> NSString為:NSString *dataString = [[NSString alloc] initWithData:[NSData data] encoding:NSUTF8StringEncoding];

NSString --> NSData為:NSData *stringData = [[NSString string] dataUsingEncoding:NSUTF8StringEncoding];

將data類型的數據,轉成UTF8的數據:

+ (NSString*)dataToUTF8String:(NSData *)data {return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; }

將string轉換為指定編碼 :

+ (NSString *)changeDataToEncodinString:(NSData *)data encodin:(NSStringEncoding )encoding {return [[NSString alloc] initWithData:data encoding:encoding]; }

2、NSData 與 UIImage
NSDat --> UIImage為:UIImage *image = [UIImage imageWithData: imageData];
例如:

- (NSData *)changePictureToNSData {NSString *filePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:[NSString stringWithFormat:@"ceshi.png"]];NSData *imageData = [NSData dataWithContentsOfFile:filePath];return imageData; }

Plist文件:

數組、字典只能將BOOL、NSNumber、NSString、NSData、NSDate、NSArray、NSDictionary寫入屬性列表plist文件.

  • String方式添加
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"xxx.plist"];[[NSString string] writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
  • Array方式添加
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"xxx.plist"];[[NSArray array] writeToFile:path atomically:YES];
  • Dictionary方式添加
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"xxx.plist"];[[NSDictionary dictionary] writeToFile:path atomically:YES];

總結

以上是生活随笔為你收集整理的iOS之文件管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。