zoukankan      html  css  js  c++  java
  • 用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

  • 相关阅读:
    Python——6切片
    Python——5函数
    Python——4Dict和Set类型
    C# for循环
    C# while循环
    C#循环结构
    C#判断
    C#运算符
    windows安装IIS不成功的原因
    “未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/5350760.html
Copyright © 2011-2022 走看看