ios CCFileUtil.m

//
//  CCFileUtil.h
//  CCFC
//
//


#ifndef CC_FILE_UTIL_H
#define CC_FILE_UTIL_H


#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import "CCNSString.h"


//应用程序目录
#define APP_DIR                         [[NSBundle mainBundle] bundlePath]
//资源目录
#define RES_DIR                         [[NSBundle mainBundle] resourcePath]


#define SYS_LIB_PATH(name)      [name systemLibraryPath]


// path for the system library
#define UI_KIT_PATH                             @"/System/Library/Frameworks/UIKit.framework/UIKit"
#define FOUNDATION_PATH                 @"/System/Library/Frameworks/Foundation.framework/Foundation"


#define SYS_APP_PATH                    @"/Applications/"


// it used for file or folder operation: copy, delete, isExist, getFolder and so on
@interface CCFileUtil : NSObject 
{
        
}


// 获取应用程序的文档目录
+ (NSString *)getDocFolder;
#define GET_DOC_DIR                     getDocumentDirectory


// 获取应用程序文档目录中某个指定文件全路径
+ (NSString *)getFileFullPathInDocument:(NSString *)fileName;


// 获取应用程序Library目录路径
+ (NSString *)getLibFolder;


//获取应用程序Library目录中某个指定文件全路径
+ (NSString *)getFileFullPathInLibFolder:(NSString *)fileName;


// 获取应用程序bundle路径
+ (NSString *)getBundleFolder;


// 获取文件在bundle路径的全路径名
+ (NSString *)getFileFullPathInBundlePath:(NSString *)fileName;


// 获取文件路径的父目录名称
+ (NSString *)getParentFolder:(NSString *)filePath;


// 如果文件在Document目录中不存在,那么拷贝一份; 如果已存在,不拷贝
+ (BOOL)copyFileToDocumentFolderIfNotExist:(NSString *)fileName;


// 将文件拷贝到Document目录中,如果已存在,覆盖
+ (BOOL)copyFileToDocumentFolder:(NSString *)fileName;


// 删除应用程序Document目录中的指定文件
+ (BOOL)deleteFileInDocFolder:(NSString *)fileName;
// 删除指定文件夹下指定文件名的文件
+ (BOOL)deleteFileInFolder:(NSString *)folder withFileName:(NSString *)fileName;
// delete a folder
+ (BOOL)deleteFolder:(NSString *)folderPath;


// 文件是否存在
+ (BOOL)isFileExist:(NSString *)filePath;


// 重命名指定路径下某个文件为另一个文件名
+ (BOOL)rename:(NSString *)srcFilePath srcFileName:(NSString *)srcName toFileName:(NSString *)destName;


// 重命名指定路径下某个文件为指定目录下的另一个文件名
+ (BOOL)rename:(NSString *)srcFilePath srcFileName:(NSString *)srcName 
      destFolder:(NSString *)destFolder destFileName:(NSString *)destName;


// 判断是否是目录
+ (BOOL)isFolder:(NSString *)filePath;


// 获取目录下第一级的所有文件
+ (NSArray *)getAllFilesAtFolder:(NSString *)path;


+ (NSString *)systemLibraryPath:(NSString *)name;


// returns whether the path is an absolute path
+ (BOOL)isAbsolutePath:(NSString *)path;


// generate a new file in folder, not create
+ (NSString *)generateNewFile:(NSString *)folder;


// create a new file(not a folder) in the indicated folder
+ (NSString *)createNewFileInFolder:(NSString *)folder;


// get the current directory
+ (NSString *)getCurrentDirectory;


// change the current directory to the indicated directory
+ (BOOL)changeCurrentDirectoryToDirectory:(NSString *)newDir;


// enumerator all files in folder
+ (NSArray *)enumAllFilesInFolder:(NSString *)folder;




// get the home directory
+ (NSString *)getHomeDir;


@end


#endif  // __OBJC__


#endif  // CC_FILE_UTIL_H

//
//  CCFileUtil.m
//  CCFC
//
//


#import "CCFileUtil.h"
#import "CCRandom.h"


@implementation CCFileUtil


//获取应用程序的文档目录
+ (NSString *)getDocFolder
{
        NSArray *userPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        return [userPaths objectAtIndex:0];     
}


// 获取应用程序文档目录中某个指定文件全路径
+ (NSString *)getFileFullPathInDocument:(NSString *)fileName
{
        NSString *docPath = [self getDocFolder];
        return [docPath stringByAppendingPathComponent:fileName];
}


// 获取应用程序Library目录路径
+ (NSString *)getLibFolder
{
    NSArray *libPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
        return [libPaths objectAtIndex:0];
}


//获取应用程序Library目录中某个指定文件全路径
+ (NSString *)getFileFullPathInLibFolder:(NSString *)fileName
{
    NSString *libPath = [self getLibFolder];
    return [libPath stringByAppendingPathComponent:fileName];
}


// 获取应用程序bundle路径
+ (NSString *)getBundleFolder
{
    return APP_DIR;
}


// 获取文件在bundle路径的全路径名
+ (NSString *)getFileFullPathInBundlePath:(NSString *)fileName
{
    NSString *bundlePath = [self getBundleFolder];
    return [bundlePath stringByAppendingPathComponent:fileName];
}






// 获取文件路径的父目录名称
+ (NSString *)getParentFolder:(NSString *)filePath
{
        int i;
        for (i = filePath.length - 2; i >= 0; i--)
        {
                if([filePath characterAtIndex:i] == '/')
                {
                        break;
                }
        }
        
        if(i == filePath.length - 2 || i == 0)
        {
                return nil;
        }
        
        return [filePath substringToIndex:i];
}




// 如果文件在Document目录中不存在,那么拷贝一份; 如果已存在,不拷贝
+ (BOOL)copyFileToDocumentFolderIfNotExist:(NSString *)fileName
{
    NSString *destFileFullPath = [self getFileFullPathInDocument:fileName];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
    if(![fileManager fileExistsAtPath:destFileFullPath])
    {
        NSString *bundleFileFullPath = [RES_DIR stringByAppendingPathComponent:fileName];
        
        BOOL ret = [fileManager copyItemAtPath:bundleFileFullPath toPath:destFileFullPath error:nil];
        
        return ret;
    }
    
    return TRUE;
}


// 将文件拷贝到Document目录中,如果已存在,覆盖
+ (BOOL)copyFileToDocumentFolder:(NSString *)fileName
{
    NSString *destFileFullPath = [self getFileFullPathInDocument:fileName];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
    if([fileManager fileExistsAtPath:destFileFullPath])
    {
                if(![fileManager removeItemAtPath:destFileFullPath error:nil])
                {
                        return FALSE;
                }
    }
    NSString *bundleFileFullPath = [RES_DIR stringByAppendingPathComponent:fileName];
    return [fileManager copyItemAtPath:bundleFileFullPath toPath:destFileFullPath error:nil];
}




// 删除指定文件夹下指定文件名的文件
+ (BOOL)deleteFileInFolder:(NSString *)folder withFileName:(NSString *)fileName
{
    NSString *destFileFullPath = [folder stringByAppendingPathComponent:fileName];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        if(![fileManager fileExistsAtPath:destFileFullPath])
        {
                return FALSE;
        }
        
        return [fileManager removeItemAtPath:destFileFullPath error:nil];
}


// 删除应用程序Document目录中的指定文件
+ (BOOL)deleteFileInDocFolder:(NSString *)fileName
{
    return [self deleteFileInFolder:[self getDocFolder] withFileName:fileName];
}


// delete a folder
+ (BOOL)deleteFolder:(NSString *)folderPath
{
        return [self deleteFileInFolder:folderPath withFileName:@""];
}


// 文件是否存在
+ (BOOL)isFileExist:(NSString *)filePath
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
        return ([fileManager fileExistsAtPath:filePath]);
}


// 重命名指定路径下某个文件为另一个文件名
+ (BOOL)rename:(NSString *)srcFileFolder srcFileName:(NSString *)srcName 
    toFileName:(NSString *)destName
{
    return [self rename:srcFileFolder srcFileName:srcName 
             destFolder:srcFileFolder destFileName:destName];
}


// 重命名指定路径下某个文件为指定目录下的另一个文件名
+ (BOOL)rename:(NSString *)srcFileFolder srcFileName:(NSString *)srcName 
    destFolder:(NSString *)destFolder destFileName:(NSString *)destName
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString *srcFullPath = [NSString stringWithFormat:@"%@/%@", srcFileFolder, srcName];
    if([fileManager fileExistsAtPath:srcFullPath])
        return FALSE;
    
        NSString *destFullPath = [NSString stringWithFormat:@"%@/%@", destFolder, destName];
        BOOL ret = [fileManager copyItemAtPath:srcFullPath toPath:destFullPath error:nil];
    if(!ret)
        return FALSE;
    
    ret = [fileManager removeItemAtPath:srcFullPath error:nil];
        return ret;
}


// 判断是否是目录
+ (BOOL)isFolder:(NSString *)filePath
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL ret;
    BOOL isExist = [fileManager fileExistsAtPath:filePath isDirectory:&ret];
    return (isExist && ret);
}


// 获取目录下第一级的所有文件
+ (NSArray *)getAllFilesAtFolder:(NSString *)path
{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        return [fileManager contentsOfDirectoryAtPath:path error:nil];
}


+ (NSString *)systemLibraryPath:(NSString *)name
{
        return [name systemLibraryPath];
}


// returns whether the path is an absolute path
+ (BOOL)isAbsolutePath:(NSString *)path
{
        return [path isAbsolutePath];
}


// generate a new file in folder, not create
+ (NSString *)generateNewFile:(NSString *)folder
{
        NSString *tempFileName;
        int len = 4;
        BOOL generateNewFileOK = FALSE;
        
        while (!generateNewFileOK)
        {
                tempFileName = [CCRandom generateRandomStringByLen:len];
                generateNewFileOK = ![CCFileUtil isFileExist:
                                                         [folder stringByAppendingFormat:@"/%@", tempFileName]];
                if(!generateNewFileOK)
                        ++len;
                if(len == INT_MAX)
                        return nil;
        }
        return tempFileName;
}


// create a new file(not a folder) in the indicated folder
+ (NSString *)createNewFileInFolder:(NSString *)folder
{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        NSString *tempFileName = [self generateNewFile:folder];
        if(tempFileName == nil)
                return nil;
        
        NSString *fileFullPath = [NSString stringWithFormat:@"%@/%@", folder, tempFileName];
        if([fileManager createFileAtPath:fileFullPath contents:nil attributes:nil])
                return tempFileName;
        return nil;
}


// get the current directory
+ (NSString *)getCurrentDirectory
{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        return [fileManager currentDirectoryPath];
}


// change the current directory to the indicated directory
+ (BOOL)changeCurrentDirectoryToDirectory:(NSString *)newDir
{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        return [fileManager changeCurrentDirectoryPath:newDir];
}


// enumerator all files in folder
+ (NSArray *)enumAllFilesInFolder:(NSString *)folder
{
        NSMutableArray *arr = [NSMutableArray array];
        NSString *file;
        NSDirectoryEnumerator *enumerator = 
                        [[NSFileManager defaultManager] enumeratorAtPath:folder];
        while(file = [enumerator nextObject])
        {
                [arr addObject:file];
        }
        return arr;
}




// get the home directory
+ (NSString *)getHomeDir
{
        return NSHomeDirectory();
}


@end


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值