PhotoBatch-文件重命名(2)

上一篇文章已經(jīng)寫了如何獲取文件夾路徑撩鹿,今天實現(xiàn)photoBatch的第一個簡單功能谦炬,圖片批量重命名,當然也可以對任何文件進行重命名

搭建界面

搭了個簡單的界面,如下圖:


布局用了purelayout框架

我們需要得到重命名后的文件名前綴键思,以及文件格式和是否保留原文件,給這3個變量一個默認值吼鳞。

文件夾處理

獲取到文件路徑后處理:需要對每個文件的路徑進行處理看蚜,如果是以
file://開頭,需要把前面的file://去掉赔桌,這種地址無法處理供炎。這里是對文件夾路徑的處理,處理完的路徑再加上文件名就是完整的路徑疾党。

- (void)dealFiles:(NSArray *)filepaths
{
    self.dealingLabel.stringValue = [filepaths.firstObject description];
    
    NSMutableArray *arr = [NSMutableArray new];
    // 對文件夾路徑進行處理
    for (NSString *path in filepaths) {
        if ([[path description] hasPrefix:@"file:///"]) {
            NSString *newpath = [[path description] substringFromIndex:7];
            if ([newpath hasSuffix:@"/"]) {
                newpath  = [newpath substringToIndex:newpath.length - 1];
            }
            [arr addObject:newpath];
            
        } else {
            if ([[path description] hasSuffix:@"/"]) {
                NSString *tempStr = [path description];
                [arr addObject:[tempStr substringToIndex:tempStr.length - 1]];
            } else {
                [arr addObject:[path description]];
            }
            
        }
    }
    
    self.folderPaths = filepaths;
    
    NSMutableArray *allFiles = [NSMutableArray new];
    for (NSString *docuPath in self.folderPaths) { // 遍歷所有文件夾 獲取所有文件個數(shù)
        NSArray *files = [XCFileManager listFilesInDirectoryAtPath:docuPath deep:NO];//這里遍歷得到的只是文件名
        [allFiles addObjectsFromArray:files];
    }

    NSAlert *alert = [[NSAlert alloc] init];
    [alert setMessageText:@"文件獲取成功"];
    [alert setInformativeText:[NSString stringWithFormat:@"文件總數(shù):%ld 個", allFiles.count]];
    [alert beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse returnCode) {
    }];
}

文件批量重命名

遍歷所有文件夾下所有文件音诫,NSFileManager 并沒有重命名的方法,如果要保留原文件雪位,則執(zhí)行copy操作竭钝,如果不保留原文件,則執(zhí)行move操作雹洗。下面是重命名代碼的實現(xiàn)香罐。

- (IBAction)StartAction:(NSButton *)sender {
    
    
    NSMutableArray *allFiles = [NSMutableArray new];
    for (NSString *docuPath in self.folderPaths) {
        NSArray *files = [XCFileManager listFilesInDirectoryAtPath:docuPath deep:NO];//這里遍歷得到的只是文件名
        for (NSString *filename in files) {
            [allFiles addObject:[NSString stringWithFormat:@"%@/%@", docuPath, filename]];
        }
    }
    if (allFiles.count == 0) {
        return;
    }
    NSString *resultFilePath = [NSString stringWithFormat:@"%@/%@", self.folderPaths.firstObject, @"result"];
    
    NSError *err = nil;
    [XCFileManager createDirectoryAtPath:resultFilePath error:&err];
    NSString *prefixName = _reNameView.prefixInput.stringValue;
    if (!prefixName || prefixName.length == 0) {
        prefixName = @"img_";
    }
    NSString *suffixName = _reNameView.suffixInput.stringValue;
    if(!suffixName || suffixName.length == 0) {
        suffixName = @"";
    }
    NSInteger index = 1;
    NSString *suffix = @"";
    for (NSString *path in allFiles) {
//        // 如果遇到 沒有文件名的文件,直接過濾
        if ([path componentsSeparatedByString:@"."].count < 2) {
            continue;
        }
        if (suffixName.length == 0) {
            suffix = [[path componentsSeparatedByString:@"."].lastObject description];
        } else {
            suffix = suffixName;
        }
        self.dealingLabel.stringValue = [path description];
        
        NSString *movePath = [NSString stringWithFormat:@"%@/%@%ld.%@", resultFilePath, prefixName, index,suffix];
        if (_reNameView.checkSaveBtn.state == 1) {
           [XCFileManager moveItemAtPath:path toPath:movePath overwrite:NO];
        } else {
            [XCFileManager moveItemAtPath:path toPath:movePath overwrite:YES];
        }
        
        index ++;
    }
    
    self.dealingLabel.stringValue = @"處理完成";
    
}

demo地址:https://github.com/macOSApp/photoBatch

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末时肿,一起剝皮案震驚了整個濱河市庇茫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗜侮,老刑警劉巖港令,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啥容,死亡現(xiàn)場離奇詭異锈颗,居然都是意外死亡,警方通過查閱死者的電腦和手機咪惠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門击吱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遥昧,你說我怎么就攤上這事覆醇。” “怎么了炭臭?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵永脓,是天一觀的道長。 經(jīng)常有香客問我鞋仍,道長常摧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮落午,結果婚禮上谎懦,老公的妹妹穿的比我還像新娘。我一直安慰自己溃斋,他們只是感情好界拦,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梗劫,像睡著了一般享甸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上在跳,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天枪萄,我揣著相機與錄音,去河邊找鬼猫妙。 笑死瓷翻,一個胖子當著我的面吹牛,可吹牛的內容都是我干的割坠。 我是一名探鬼主播齐帚,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼彼哼!你這毒婦竟也來了对妄?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤敢朱,失蹤者是張志新(化名)和其女友劉穎剪菱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拴签,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡孝常,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚓哩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片构灸。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岸梨,靈堂內的尸體忽然破棺而出喜颁,到底是詐尸還是另有隱情,我是刑警寧澤曹阔,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布半开,位于F島的核電站,受9級特大地震影響赃份,放射性物質發(fā)生泄漏寂拆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漓库。 院中可真熱鬧恃慧,春花似錦、人聲如沸渺蒿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茂装。三九已至怠蹂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間少态,已是汗流浹背城侧。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彼妻,地道東北人嫌佑。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像侨歉,于是被迫代替她去往敵國和親屋摇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理幽邓,服務發(fā)現(xiàn)炮温,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • Ubuntu的發(fā)音 Ubuntu担巩,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音重斑。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,277評論 9 467
  • 她 初長 深閨院 小徑幽長 春來綠蘿裳 云髻輕斜挽簪 嬌笑幾分眉情婉 花見猶憐不覺輕嘆 柳絮因風四下飄散亂 只愿花...
    伶人雨閱讀 497評論 0 1
  • 最近聽到一個概念兵睛,叫“麻煩守恒定律”肯骇,就是說窥浪,麻煩的總量是不變的,解除麻煩可以靠工具和人笛丙,工具承擔解決麻煩的任務多...
    成長是剛需閱讀 596評論 0 0