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

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

时间: 2024-08-02 18:49:51

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

写了个读取EXIF拍摄时间更改文件名的程序 但读取到的string始终有问题 求助

问题描述 主程序:usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;usingSystem.IO;namespacePhoto_name_change_tool{publicpartialclassForm1:Form{publicList<string>FilesName=newList<string>();publicForm1(){InitializeComponent();}priva

Python写的一个简单监控系统

  这篇文章主要介绍了Python写的一个简单监控系统,本文讲解了详细的编码步骤,并给给出相应的实现代码,需要的朋友可以参考下 市面上有很多开源的监控系统:Cacti.nagios.zabbix.感觉都不符合我的需求,为什么不自己做一个呢 用Python两个小时徒手撸了一个简易的监控系统,给大家分享一下,希望能对大家有所启发 首先数据库建表 建立一个数据库"falcon",建表语句如下: ? 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE `stat` ( `

c#-c++写的一个简单学生信息管理系统,求助。

问题描述 c++写的一个简单学生信息管理系统,求助. 编译不报错,就是运行不出来 #include<iostream.h> #include<stdio.h> #include<string.h> class student//定义学生信息类 {public: char name[20]; char num[10]; char banji[20]; int math,english,chinese,computer; int sum; double ave; void

java代码-我用Java 写的一个简单截图小工具 但是出现一些在重截时出现bug 跪求大神

问题描述 我用Java 写的一个简单截图小工具 但是出现一些在重截时出现bug 跪求大神 /**在这里贴上我注释满满的代码 求一语道破 求建议 求批评 没有贴main 方法 随便写个main方法便可运行 */ ` package com.subimaga; import java.awt.AWTException; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Cursor; import java.

java-jsp+servlet写了一个简单的注册,但是出现找不到页面

问题描述 jsp+servlet写了一个简单的注册,但是出现找不到页面 小菜鸟刚写了一个简单的注册页面,但是配置好servlet以后出现找不到页面,找了好长时 间没有发现问题在哪里,希望有明白的给解释解释 解决方案 你写的是相对路径 ,一般用绝对路径 form 在 项目/page 下找相应页面,你的servlet 是映射在 项目/ 下的 你可以 在form 的action 改为 ../addUser 试试 解决方案二: 看看这个: 路径总结: 路径分为两种情况: 1.客户端路径 ==> 给浏览器

makefile-在linux写的一个简单的程序 编译不能通过 求大神给看看

问题描述 在linux写的一个简单的程序 编译不能通过 求大神给看看 解决方案 总共有3个文件 test.h test.cpp main.cpp; 在main.cpp内部调用test类实现的方法,执行make命令后,可以生成test.o和main.o但是好像链接的时候有问题, 不能生成目标问题 解决方案二: 找出问题来了 是makefile文件写的有问题 编译应该使用g++ 代码有问题的地方 希望各位指正 解决方案三: 提示信息是函数没有定义,链接返回错误.

C++写的一个简单类模版 友元函数求最大最小值

问题描述 C++写的一个简单类模版 友元函数求最大最小值 如题 , 编译时总是说 [Error] ld returned 1 exit status (编译器dev c++) using namespace std; template <typename t> class CValue { t data[5]; public: CValue(); friend t Max(CValue <t> a); friend t Min(CValue <t> a); }; tem

struts2.0-我写了一个简单的struts2登录验证但是不能跳转,找了好久也不知道为什么,请大神帮忙看一下,先谢了

问题描述 我写了一个简单的struts2登录验证但是不能跳转,找了好久也不知道为什么,请大神帮忙看一下,先谢了 解决方案 SUBMITE提交呢? 解决方案二: 解决方案三: 调试下Action方法进入了吗?

纯css+js写的一个简单的tab标签页带样式_javascript技巧

最近经常要用tab标签页,所以写了一个简单的,以后用的话直接拷贝一个,稍微改改就OK了. 先看效果图:  接下来看下代码怎么写的吧: 一.sp文件easytab.jsp 复制代码 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String b