用Objective-C写了一个简单的批量更改文件名的程序
前言:因为本人要高仿一个app,从app中解压asserts得到的所有图片文件,文件名都带有~iPhone这个干扰的名字,为了去除这个~iPhone这个字符串,所以本人写了个简答的批量更改所有文件名的程序。
程序员就是应该会利用程序来帮自己偷懒,如果你一个个文件手动去改,那你就太low了啊。
因为这个程序用到的NSFileManager的很多方法本人不是很熟悉,也是花了点时间去熟悉NSFileManager的一些方法,所以写下这个笔记做个笔记,省的下次又需要却还是遗忘了方法。
我的基本需求,在啰嗦一下下哈:
一个文件目录下有上百个图片文件,文件名都带有~iPhone。写一个程序,删除所有文件名中的这个字符串~iPhone,或者是重命名所有文件,不要有~iPhone这个字符串。
代码:
这个代码利用了第三方别人封装好的正则表达式类,然后再进一步实现我自己的需求
这个挺好用的正则表达式的类在github上:https://github.com/bendytree/Objective-C-RegEx-Categories
然后就是:
1 // 2 // main.m 3 // ChangeFileName 4 // 5 // Created by HEYANG on 16/4/3. 6 // Copyright © 2016年 HEYANG. All rights reserved. 7 // 8 // cnBlog:http://www.cnblogs.com/goodboy-heyang/ 9 // github:https://github.com/HeYang123456789 10 // 11 12 //-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移动一个文件(to 不能是已存在的) 13 14 // 这里输入文件目录 15 #define FileDirectory @"/Users/HeYang/Desktop/hello" 16 17 18 #import <Foundation/Foundation.h> 19 #import "RegExCategories.h" 20 21 22 // 替换文件名这个字符串,去除文件名中~iphone这个字眼 23 NSString* changeString(NSString* string){ 24 // 直接使用正则表达式,替换掉 25 NSString* result = [RX(@"~iphone") replace:string 26 with:@""]; 27 return result; 28 } 29 30 // 获取文件名,并去除~iPhone 31 NSString* getFileNameFromDirectory(NSString* directory) 32 { 33 NSFileManager* manager = [NSFileManager defaultManager]; 34 NSArray *dirArray = [manager contentsOfDirectoryAtPath:directory error:nil]; 35 for (NSString* str in dirArray) { 36 // 原来的文件目录 37 NSString* fromFileName = [FileDirectory stringByAppendingPathComponent:str]; 38 // 改变之后的文件名 39 NSString* changedStr = changeString(str); 40 // 改变之后的文件目录 41 NSString* toFileName = [FileDirectory stringByAppendingPathComponent:changedStr]; 42 // 替换,其实也是重命名 43 [manager moveItemAtPath:fromFileName toPath:toFileName error:nil]; 44 } 45 return nil; 46 } 47 48 int main(int argc, const char * argv[]) { 49 @autoreleasepool { 50 51 getFileNameFromDirectory(FileDirectory); 52 53 } 54 return 0; 55 }
项目源码备份到百度云链接: http://pan.baidu.com/s/1dFjUV5J 密码: e5q9