//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPFFile : NSObject
///< 获取AppName.app 目录路径:
+ (NSString *)file_path;
///< 获取Documents目录路径的方法:
+ (NSString *)file_documentPath;
///< Library/Caches目录路径方法:
+ (NSString *)file_cachePath;
///< Library/Application Support目录路径方法:
+ (NSString *)file_ApplicationSupport;
///< tmp目录路径的方法:
+ (NSString *)file_tmp;
///< tmp目录 创建文件夹
+ (NSString *)file_tmpAddFileName:(NSString *)filename;
///< tmp目录中 删除指定文件夹
+ (void)file_tmpRemoveFileName:(NSString *)file_name;
///< tmp目录中写文件夹 并在文件夹中+文件
+ (void)file_tmpAddFileName:(NSString *)file_name txt:(NSString *)txtname content:(NSString *)contentstr;
///< 获取沙盒主目录路径
+ (NSString *)file_homePaht;
///< 判断文件是否存在
+ (BOOL)file_isExistFileForPath:(NSString *)strFilePath;
///< 判断文件夹目录是否存在
+ (BOOL)file_isExistDirectoryForPath:(NSString *)strDirPath;
///< 创建文件夹目录
+ (BOOL)file_createDirectoryForPath:(NSString *)strDirPath;
///< 删除文件
+ (BOOL)file_deleteFileOrDirectoryAtPath:(NSString *)strPath;
///< 移动文件
+ (BOOL)file_moveFileAtPath:(NSString *)originPath toNewPath:(NSString *)newPath;
@end
NS_ASSUME_NONNULL_END
//
#import "XPFFile.h"
@implementation XPFFile
// MARK: ----- 获取AppName.app 目录路径:
+ (NSString *)file_path
{
return [[NSBundle mainBundle] bundlePath];
}
// MARK: ----- 获取Documents目录路径的方法:
+ (NSString *)file_documentPath
{
return NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
}
// MARK: ----- Library/Caches目录路径方法:
+ (NSString *)file_cachePath
{
return NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
}
// MARK: ----- Library/Application Support目录路径方法:
+ (NSString *)file_ApplicationSupport
{
return [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0];
}
// MARK: ----- tmp目录路径的方法:
+ (NSString *)file_tmp
{
return NSTemporaryDirectory();
}
// MARK: ----- tmp目录 创建文件夹
+ (NSString *)file_tmpAddFileName:(NSString *)filename
{
if (filename.length == 0)
{ // 要写个名字
return @"";
}
// 获取创建文件夹的路径
NSString *dirPath = [[XPFFile file_tmp] stringByAppendingPathComponent:filename];
if ([XPFFile file_isExistDirectoryForPath:dirPath])
{ // 存在
return @"";
}
// 创建文件管理对象 创建文件夹
[XPFFile file_createDirectoryForPath:dirPath];
return dirPath;
}
// MARK: ----- 在tmp目录中写文件夹 并在文件夹中+文件
+ (void)file_tmpAddFileName:(NSString *)file_name txt:(NSString *)txtname content:(NSString *)contentstr
{
if (file_name.length == 0 || txtname.length == 0)
{ // 要写个名字
return;
}
// 获取到Caches文件夹路径
NSString *pathtmp = [XPFFile file_tmpAddFileName:file_name];
NSLog(@"%@", pathtmp);
// if ([[[NSUserDefaults standardUserDefaults] objectForKey:file_name] integerValue] == 1) {
// return;
// }
// MARK: ----- 写入 text 文件
//get the documents directory:
NSString *documentsDirectory = [NSString stringWithFormat:@"%@%@", [XPFFile file_tmp], file_name];
//make a file name to write the data to using the documents directory:
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:txtname];
//create content - four lines of text
NSString *content = contentstr;//@"One\nTwo\nThree\nFour\nFive";
//save content to the documents directory
[content writeToFile:fileName atomically:NO encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", fileName);
}
// MARK: ----- tmp目录中 删除指定文件夹
+ (void)file_tmpRemoveFileName:(NSString *)file_name
{
//NSString *file_name = @"fileImgVideo";
if (file_name.length == 0) {
return;
}
NSString *remStr = [NSString stringWithFormat:@"%@%@", [XPFFile file_tmp], file_name];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:remStr error:nil];
}
// MARK: ----- 获取沙盒主目录路径
+ (NSString *)file_homePaht
{
return NSHomeDirectory();
}
// MARK: ----- 判断文件是否存在
+ (BOOL)file_isExistFileForPath:(NSString *)strFilePath
{
if (strFilePath.length < 1) {
return NO;
}
NSFileManager *fileMgr = [NSFileManager defaultManager];
BOOL bDir = NO;
BOOL bExist = [fileMgr fileExistsAtPath:strFilePath isDirectory:&bDir];
if (!bDir && bExist) {
return YES;
}
return NO;
}
// MARK: ----- 判断文件夹目录是否存在
+ (BOOL)file_isExistDirectoryForPath:(NSString *)strDirPath
{
if (strDirPath.length < 1) {
return NO;
}
NSFileManager *fileMgr = [NSFileManager defaultManager];
BOOL bDir = NO;
BOOL bExist = [fileMgr fileExistsAtPath:strDirPath isDirectory:&bDir];
if (bDir && bExist) {
return YES;
}
return NO;
}
// MARK: ----- 创建文件夹目录
+ (BOOL)file_createDirectoryForPath:(NSString *)strDirPath
{
if (strDirPath.length < 1) {
return NO;
}
if ([XPFFile file_isExistDirectoryForPath:strDirPath]) {
return YES;
}
NSFileManager *fileMgr = [NSFileManager defaultManager];
BOOL bResult = [fileMgr createDirectoryAtPath:strDirPath withIntermediateDirectories:YES attributes:nil error:nil];
return bResult;
}
// MARK: ----- 删除文件
+ (BOOL)file_deleteFileOrDirectoryAtPath:(NSString *)strPath
{
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSError *error = nil;
BOOL bResult = [fileMgr removeItemAtPath:strPath error:&error];
return bResult;
}
// MARK: ----- 移动文件
+ (BOOL)file_moveFileAtPath:(NSString *)originPath toNewPath:(NSString *)newPath
{
if (![XPFFile file_isExistFileForPath:originPath]) {
return NO;
}
NSFileManager *fileMgr = [NSFileManager defaultManager];
BOOL bResult = [fileMgr moveItemAtPath:originPath toPath:newPath error:nil];
return bResult;
}
@end
知识点
Documents:保存应用程序运行时生成的需要持久化数据,iTunes会自动备份该目录
苹果公司建议将程序中建立的活在程序浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。
Library:存储程序的默认设置和其他状态信息,iTunes会自动备份该文件目录。
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出时删除,通常存放体积比较大,但并不是很重要的资源
Library/Preferences:保存应用的所有偏好设置,iOS的Setting(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。——PS:如果你想对偏好设置进行相应的操作,应该使用NSUserDefaults类来取得和设置应用程序的偏好,而不是直接创建偏好设置文件。
tmp:保存应用程序运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除,应用没有运行时,系统也有可能会清除该目录下的文件,iTunes不会同步该目录,你的iPhone重启时,该目录下的文件会被删除。
网友评论