前言:因為本人要高仿一個app,從app中解壓asserts得到的所有圖片文件,文件名都帶有~iPhone這個干擾的名字,為了去除這個~iPhone這個字符串,所以本人寫了個簡答的批量更改所有文件名的程序。
程序員就是應該會利用程序來幫自己偷懶,如果你一個個文件手動去改,那你就太low了啊。
因為這個程序用到的NSFileManager的很多方法本人不是很熟悉,也是花了點時間去熟悉NSFileManager的一些方法,所以寫下這個筆記做個筆記,省的下次又需要卻還是遺忘了方法。
我的基本需求,在啰嗦一下下哈:
一個文件目錄下有上百個圖片文件,文件名都帶有~iPhone。寫一個程序,刪除所有文件名中的這個字符串~iPhone,或者是重命名所有文件,不要有~iPhone這個字符串。
代碼:
這個代碼利用了第三方別人封裝好的正則表達式類,然後再進一步實現我自己的需求
這個挺好用的正則表達式的類在github上:https://github.com/bendytree/Objective-C-RegEx-Categories
然後就是:
// // main.m // ChangeFileName // // Created by HEYANG on 16/4/3. // Copyright © 2016年 HEYANG. All rights reserved. // // cnBlog:http://www.cnblogs.com/goodboy-heyang/ // github:https://github.com/HeYang123456789 // //-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移動一個文件(to 不能是已存在的) // 這裡輸入文件目錄 #define FileDirectory @"/Users/HeYang/Desktop/hello" #import <Foundation/Foundation.h> #import "RegExCategories.h" // 替換文件名這個字符串,去除文件名中~iphone這個字眼 NSString* changeString(NSString* string){ // 直接使用正則表達式,替換掉 NSString* result = [RX(@"~iphone") replace:string with:@""]; return result; } // 獲取文件名,並去除~iPhone NSString* getFileNameFromDirectory(NSString* directory) { NSFileManager* manager = [NSFileManager defaultManager]; NSArray *dirArray = [manager contentsOfDirectoryAtPath:directory error:nil]; for (NSString* str in dirArray) { // 原來的文件目錄 NSString* fromFileName = [FileDirectory stringByAppendingPathComponent:str]; // 改變之後的文件名 NSString* changedStr = changeString(str); // 改變之後的文件目錄 NSString* toFileName = [FileDirectory stringByAppendingPathComponent:changedStr]; // 替換,其實也是重命名 [manager moveItemAtPath:fromFileName toPath:toFileName error:nil]; } return nil; } int main(int argc, const char * argv[]) { @autoreleasepool { getFileNameFromDirectory(FileDirectory); } return 0; }
項目源碼備份到百度雲鏈接: http://pan.baidu.com/s/1dFjUV5J 密碼: e5q9