You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.4 KiB
139 lines
4.4 KiB
2 years ago
|
//
|
||
|
// CJFileUtility.m
|
||
|
//
|
||
|
// Created by chenjian on 4/25/12.
|
||
|
// Copyright (c) 2012 cj. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "CJFileUtility.h"
|
||
|
#import <sys/xattr.h>
|
||
|
|
||
|
@implementation CJFileUtility
|
||
|
|
||
|
+ (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)path
|
||
|
{
|
||
|
NSURL *url = [NSURL fileURLWithPath:path];
|
||
|
return [url setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
|
||
|
}
|
||
|
|
||
|
+ (BOOL)fileExists:(NSString *)fileName
|
||
|
{
|
||
|
return [[NSFileManager defaultManager] fileExistsAtPath:fileName];
|
||
|
}
|
||
|
|
||
|
+ (long long) fileSizeAtPath:(NSString*)filePath {
|
||
|
NSFileManager* manager = [NSFileManager defaultManager];
|
||
|
if ([manager fileExistsAtPath:filePath]){
|
||
|
return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
+ (BOOL)writeToFile:(NSString *)fileName data:(NSData*)data
|
||
|
{
|
||
|
return [data writeToFile:fileName atomically:YES];
|
||
|
}
|
||
|
+(BOOL)appendToFile:(NSString *)fileName data:(NSData*)data
|
||
|
{
|
||
|
if ([CJFileUtility fileExists:fileName]) {
|
||
|
// 取得修改的文件句柄
|
||
|
NSFileHandle *fileHandler = [NSFileHandle fileHandleForUpdatingAtPath:fileName];
|
||
|
// 移动指针到文件末尾
|
||
|
[fileHandler seekToEndOfFile];
|
||
|
// 追加内容
|
||
|
[fileHandler writeData:data];
|
||
|
|
||
|
return YES;
|
||
|
} else {
|
||
|
return [data writeToFile:fileName atomically:YES];
|
||
|
}
|
||
|
}
|
||
|
+(BOOL)deleteFile:(NSString *)fileName
|
||
|
{
|
||
|
return [[NSFileManager defaultManager] removeItemAtPath:fileName error:nil];
|
||
|
}
|
||
|
+(BOOL)renameFile:(NSString *)oldName newName:(NSString*)newName
|
||
|
{
|
||
|
if ([CJFileUtility fileExists:oldName]) {
|
||
|
[CJFileUtility deleteFile:newName];
|
||
|
return [[NSFileManager defaultManager] moveItemAtPath:oldName toPath:newName error:nil];
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
+ (BOOL)copyFile:(NSString *)srcFile to:(NSString *)dstFile
|
||
|
{
|
||
|
if ([CJFileUtility fileExists:srcFile]) {
|
||
|
return [[NSFileManager defaultManager] copyItemAtPath:srcFile toPath:dstFile error:nil];
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
+ (BOOL)moveFile:(NSString *)srcFile to:(NSString *)dstFile
|
||
|
{
|
||
|
if ([CJFileUtility fileExists:srcFile]) {
|
||
|
return [[NSFileManager defaultManager] moveItemAtPath:srcFile toPath:dstFile error:nil];
|
||
|
}
|
||
|
return NO;
|
||
|
}
|
||
|
+ (BOOL)createPath:(NSString *)path
|
||
|
{
|
||
|
return [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
|
||
|
}
|
||
|
+(NSString *)documentsPath
|
||
|
{
|
||
|
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
|
||
|
return [paths objectAtIndex:0];
|
||
|
}
|
||
|
|
||
|
|
||
|
+ (NSString *)cachePath
|
||
|
{
|
||
|
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
|
||
|
return [paths objectAtIndex:0];
|
||
|
}
|
||
|
|
||
|
+ (NSString *)cachePathWithFile:(NSString *)fileName
|
||
|
{
|
||
|
return [[CJFileUtility cachePath] stringByAppendingPathComponent:fileName];
|
||
|
}
|
||
|
|
||
|
+(NSString *)tempPath
|
||
|
{
|
||
|
return [NSString stringWithFormat:@"%@/%@", NSHomeDirectory(), @"tmp"];
|
||
|
}
|
||
|
|
||
|
+ (NSString *)documentsPathSubDir:(NSString*)subDir
|
||
|
{
|
||
|
NSString* path = [[CJFileUtility documentsPath] stringByAppendingPathComponent:subDir];
|
||
|
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
|
||
|
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
|
||
|
}
|
||
|
return path;
|
||
|
}
|
||
|
+ (NSString *)documentsPathSubDir:(NSString*)subDir andFile:(NSString*)fileName
|
||
|
{
|
||
|
NSString* path = [[[[CJFileUtility documentsPath] stringByAppendingPathComponent:subDir] stringByAppendingPathComponent:fileName] stringByDeletingLastPathComponent];
|
||
|
|
||
|
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
|
||
|
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
|
||
|
}
|
||
|
return [path stringByAppendingPathComponent:[fileName lastPathComponent]];
|
||
|
}
|
||
|
+ (NSString *)documentsPathSubDir:(NSString*)subDir andUrl:(NSString*)url {
|
||
|
NSString * fileName = [url lastPathComponent];
|
||
|
return [CJFileUtility documentsPathSubDir:subDir andFile:fileName];
|
||
|
}
|
||
|
|
||
|
+ (NSString *)changeFileExt:(NSString *)fileName ext:(NSString *)ext
|
||
|
{
|
||
|
NSString *noExt = [fileName stringByDeletingPathExtension];
|
||
|
return [noExt stringByAppendingPathExtension:ext];
|
||
|
}
|
||
|
|
||
|
+ (NSString *)changeFilePath:(NSString *)path fileName:(NSString *)fileName
|
||
|
{
|
||
|
NSString *filePath = [path stringByDeletingLastPathComponent];
|
||
|
return [filePath stringByAppendingPathComponent:fileName];
|
||
|
}
|
||
|
|
||
|
@end
|