前言:因为本人要高仿一个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 ;
}

项目源码备份到百度云链接: http://pan.baidu.com/s/1dFjUV5J 密码: e5q9

用Objective-C写了一个简单的批量更改文件名的程序的更多相关文章

  1. 初学shell,为了练习sed,写了个简单的批量修改文件名的脚本,后来执行时发现系统竟然自带有一个rename命令,顺便也记下了

    1 #!/bin/bash   2 <<Comment   3 批量修改文件名的脚本   4 2015/10/24   5 webber   6 Comment   7 ARGS=2   ...

  2. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  3. 写了一个简单的CGI Server

    之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看 ...

  4. 自己写的一个简单PHP采集器

    自己写的一个简单PHP采集器 <?php //**************************************************************** $url = &q ...

  5. 写了一个简单可用的IOC

    根据<架构探险从零开始写javaweb框架>内容写的一个简单的 IOC 学习记录    只说明了主要的类,从上到下执行的流程,需要分清主次,无法每个类都说明,只是把整个主线流程说清楚,避免 ...

  6. 写了一个简单的 Mybatis

    写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...

  7. 利用HttpClient写的一个简单页面获取

    之前就听说过利用网络爬虫来获取页面,感觉还挺有意思的,要是能进行一下偏好搜索岂不是可以满足一下窥探欲. 后来从一本书上看到用HttpClient来爬取页面,虽然也有源码,但是也没说用的HttpClie ...

  8. 今天写了一个简单的新浪新闻RSS操作类库

    今天,有位群友问我如何获新浪新闻列表相关问题,我想,用正则表达式网页中取显然既复杂又不一定准确,现在许多大型网站都有RSS集合,所以我就跟他说用RSS应该好办一些. 一年前我写过一个RSS阅读器,不过 ...

  9. cJSON: 一个用c写的一个简单好用的JSON解析器

    转自:http://blog.csdn.net/chenzhongjing/article/details/9188347 下载地址: http://sourceforge.net/projects/ ...

随机推荐

  1. 模块化利器: 一篇文章掌握RequireJS常用知识

    通过本文,你可以对模块化开发和AMD规范有一个较直观的认识,并详细地学习RequireJS这个模块化开发工具的常见用法.本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结 ...

  2. JAVA - 多线程 两种方法的比较

    一.继承Thread类 实现方法: (1).首先定义一个类去继承Thread父类,重写父类中的run()方法.在run()方法中加入具体的任务代码或处理逻辑.(2).直接创建一个ThreadDemo2 ...

  3. 图论 --- spfa + 链式向前星 (模板题) dlut 1218 : 奇奇与变形金刚

    1218: 奇奇与变形金刚 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 130  Solved: 37[Submit][Status][Web Boa ...

  4. 解决在IE中获取数据的缓存问题,运行环境为node.js

    IE下默认会开启缓存策略,不管是页面还是通过ajax请求的数据都会议一个url,url是uri(统一资源定位符)的实例,url就是资源的标识符. 写一个demo进行验证,测试环境:IE8,node.j ...

  5. var 的使用

    List<Enterprise> epList = ViewBag.epList; foreach (var item in epList){ //todo ... } 当 List< ...

  6. SQL Server论坛楼层计算触发器

    代码: USE suya_dev GO IF EXISTS( SELECT * FROM sys.triggers WHERE name = N'BBS_Post_before_insert' ) D ...

  7. 纯css的防止图片撑破页面的代码图片会自动按比例缩小

  8. Eclipse上GIT插件EGIT使用手册

    http://blog.csdn.net/luckarecs/article/details/7427605 Eclipse上GIT插件EGIT使用手册   一_安装EGIT插件 http://dow ...

  9. 示例 Edit 关闭键盘再显示

    在某一些 Android 的机子上,点入 Edit 显示会键盘,但关闭键盘再点一次 Edit 后,键盘并不会再次显示出来. 实机测试: Sony Xperia ST17i:无法再次显示. Nexus ...

  10. No.018:4Sum

    问题: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = ...