IOS筆記-Foundation之NSString、NSArray

下面我經過一道編程題:計算文件的代碼行數,總結一下NSString、NSArray的使用方法。編程

#import <Foundation/Foundation.h>數組

/*app

 path : 文件的全路徑(多是文件夾、也多是文件)atom

 返回值 int:代碼行數code

 */component

NSUIntegercodeLineCount(NSString *path)orm

{ci

    // 1.得到文件管理者string

    NSFileManager *mgr = [NSFileManagerdefaultManager];it

   

    // 2.標記是否爲文件夾

    BOOL dir = NO; // 標記是否爲文件夾

    // 標記這個路徑是否存在

    BOOL exist = [mgrfileExistsAtPath:path isDirectory:&dir];

   

    // 3.若是不存在,直接返回0

    if(!exist)

    {

        NSLog(@"文件的路徑不存在!");

        return 0;

    }

    // 代碼能來到着,說明路徑存在

    if (dir)

    { // 文件夾

        // 得到當前文件夾path下面的全部內容(文件夾、文件)

        NSArray *array = [mgrcontentsOfDirectoryAtPath:path error:nil];

        // 定義一個變量保存path中全部文件的總行數

        int count = 0;

        // 遍歷數組中的全部子文件(夾)名

        for (NSString *filenamein array)

        {

            // 得到子文件(夾)的全路徑

            NSString *fullPath = [NSStringstringWithFormat:@"%@/%@", path, filename];

            // 累加每一個子路徑的總行數

            count += codeLineCount(fullPath);

        }

        return count;

    }

    else

    { // 文件

        // 判斷文件的拓展名(忽略大小寫)

        NSString *extension = [[pathpathExtension] lowercaseString];

        if (![extensionisEqualToString:@"h"]

            && ![extensionisEqualToString:@"m"]

            && ![extensionisEqualToString:@"c"])

        {

            // 文件拓展名不是h,並且也不是m,並且也不是c

            return 0;

        }

        // 加載文件內容

        NSString *content = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

        // 將文件內容切割爲每一行

        NSArray *array = [contentcomponentsSeparatedByString:@"\n"];

        // 刪掉文件路徑前面的/Users/apple/Desktop/iOS練習

        NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS練習"];

        NSString *str = [path stringByReplacingCharactersInRange:rangewithString:@""];

        // 打印文件路徑和行數

        NSLog(@"%@ - %ld", str, array.count);

        return array.count;

    }

}

int main()

{

    NSUInteger count = codeLineCount(@"/Users/apple/Desktop/iOS習");

    NSLog(@"%ld", count);

    return 0;

}

void test()

{

    NSString *str = @"jack\nrose\njim\njake";

    [str writeToFile:@"/Users/apple/Desktop/abc.txt" atomically:YESencoding:NSUTF8StringEncoding error:nil];

    NSArray *array = [str componentsSeparatedByString:@"\n"];

    for (NSString *line in array)

    {

       NSLog(@"%@", line);

    }

    //int count =codeLineCount(@"/Users/apple/Desktop/iOS練習/代碼/Foundation/main.m");

    //NSLog(@"count=%d", count);

}

相關文章
相關標籤/搜索