前言:因為本人要高仿一個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