Just My Life & My Work

Posts tagged ‘file’

[軟體] 硬碟管理 GrandPerspective

先前為了解決Mac硬碟空間不足問題,找到輕便的軟體OmniDiskSweeper,多年來都靠它條列資料夾與路徑,來清理多餘的文件檔案。最近發現有視覺化呈現檔案大小的軟體GrandPerspective,可以非常直覺地看出哪個文件檔案是龐然大物,若不需要的話就可以找到該檔所在位置,然後直接點擊刪除來釋出空間~

此圖秀出我電腦中最大的檔案是Xcode.app,此為目前最新的12版,圖片最下方有顯示其路徑與大小。

我認為以我開發所需要的資源,Xcode應該要控制在1G即可,真想刪除其他我用不到的元件啊~

(繼續閱讀…)

[iOS] 建立Log檔案

寫程式與除錯,最簡單來檢查有無錯誤的方式,就是看Log,把想要知道的狀態給「列印」到控制台。

現在的需求是想知道用戶陸續做了什麼動作,我們也能透過Log來得知一二。

(繼續閱讀…)

[iOS] 檢查多國語言檔案 (Check Localization File)

沒想到簡單的多國語言檔案,也能造成App邏輯出現問題呢⋯⋯

這次由於檔案中莫名多了個「看不見的字元」,編譯能過,但卻讓NSLocalizedString(key, comment)出現問題!原本傳key會回value,出了問題後傳key會依然回key⋯⋯

(繼續閱讀…)

[iOS] 以最後修改時間列出檔案名稱 (List Contents of Directory By Last Modification Date)

先前已寫過[iOS] 列出資料夾裡的檔案名稱 (List Contents of Directory),然而現在想要以最後修改時間列出檔案名稱 (List Contents of Directory By Last Modification Date),直接來看程式碼:

/**
 Theme: List Contents of Directory By Last Modification Date
 IDE: Xcode 9
 Language: Objective C
 Date: 107/08/02
 Author: HappyMan
 Blog: https://cg2010studio.com/
 */

+(NSArray *)listFileAtPathSortedByModificationDate:(NSString *)folderPath
{
    NSError* error = nil;
    NSArray* filesArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:folderPath error:&error];
    if(error != nil) {
        NSLog(@"Error in reading files: %@", [error localizedDescription]);
        return @[];
    }

    // sort by creation date
    NSMutableArray* filesAndProperties = [NSMutableArray arrayWithCapacity:[filesArray count]];
    for(NSString* file in filesArray) {
        NSString* filePath = [folderPath stringByAppendingPathComponent:file];
        NSDictionary* properties = [[NSFileManager defaultManager]
                                    attributesOfItemAtPath:filePath
                                    error:&error];
        NSDate* modDate = [properties objectForKey:NSFileModificationDate];

        if(error == nil)
        {
            [filesAndProperties addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                                           file, @"fileName",
                                           modDate, @"lastModificationDate",
                                           nil]];
        }
    }

    // sort using a block
    // order inverted as we want latest date first
    NSArray* sortedFiles = [filesAndProperties sortedArrayUsingComparator:
                            ^(id path1, id path2)
                            {
                                // compare
                                NSComparisonResult comp = [[path1 objectForKey:@"lastModificationDate"] compare:
                                                           [path2 objectForKey:@"lastModificationDate"]];
                                // invert ordering
                                if (comp == NSOrderedDescending) {
                                    comp = NSOrderedAscending;
                                }
                                else if(comp == NSOrderedAscending){
                                    comp = NSOrderedDescending;
                                }
                                return comp;
                            }];

    return sortedFiles;
}

以我的範例取得:

<__NSArrayI 0x137459190>(
{
fileName = “2018-08-02 10:17:20~2018-08-02 10:19:20.ecg";
lastModificationDate = “2018-08-02 02:19:24 +0000″;
},
{
fileName = “2018-08-02 10:11:32~2018-08-02 10:13:32.ecg";
lastModificationDate = “2018-08-02 02:14:48 +0000″;
},
{
fileName = “2018-08-02 10:09:28~2018-08-02 10:11:28.ecg";
lastModificationDate = “2018-08-02 02:11:31 +0000″;
},
{
fileName = “2018-08-02 10:06:47~2018-08-02 10:08:47.ecg";
lastModificationDate = “2018-08-02 02:08:50 +0000″;
},
{
fileName = “2018-08-02 09:02:28~2018-08-02 09:04:28.ecg";
lastModificationDate = “2018-08-02 01:04:30 +0000″;
},
{
fileName = “2018-07-31 23:40:03~2018-07-31 23:42:03.ecg";
lastModificationDate = “2018-07-31 15:42:07 +0000″;
},
{
fileName = “2018-07-31 14:43:38~2018-07-31 14:45:38.ecg";
lastModificationDate = “2018-07-31 06:45:40 +0000″;
},
{
fileName = “2018-07-31 14:40:58~2018-07-31 14:42:58.ecg";
lastModificationDate = “2018-07-31 06:43:01 +0000″;
}
)

參考:Get directory contents in date modified order

[Xcode] C++ 讀取所在目錄檔案

過去六年以來一直寫iOS App,讀檔方面路徑沒什麼問題。

然而在Xcode寫C++ code時候,碰到讀取本目錄下txt文件的內容,不想使用絕對路徑,那麼就是使用相對路徑。可以做如下設置,就可以打開文件並讀取!

[Xcode] C++ 讀取所在目錄檔案

(繼續閱讀…)

比對檔案內容 (Compare File Content)

最近客戶的SDK更新版本,那要怎麼融入我已修改過檔案?這時候就要使用比對檔案內容 (Compare File Content)平台,現在已經有很多線上免費工具,所以挑一個來使用即可!方式有兩種:

  1. 複製貼上檔案內容
  2. 上傳檔案

比對檔案內容 (Compare File Content).png

比起開啟兩個檔案,只有純文字介面來尋找有效率多啦~

話說,我個人不是很喜歡修修改改已經寫好的功能,這次的經驗是,直接使用人家寫好的class,再來加入自己的功能。若能輕易看懂對方寫什麼,我就會開心點~

參考:Diff Checker – Online diff tool to compare text to find the differenceDiffNow – Compare files online. Powered by ExamDiff Pro

[iOS] 刪除所有檔案與資料夾 (Delete all File and Folder)

有時候需要刪除所有檔案與資料夾 (Delete all File and Folder),來重新下載檔案,因為有可能下載來的檔案是壞掉的。

Delete all file and folder2

(繼續閱讀…)

[Git] 設定.gitignore忽略追蹤檔案

Git是個博大精深的好工具,它可以用來管理檔案的版本,不過我們不需要所有功能都學會,只要學習我們所需要的功能即可!現在我需要忽略追蹤檔案,可以怎麼做呢?

Git 設定.gitignore忽略追蹤檔案

 

因為bin和obj兩個資料夾太過肥大,它是由原始碼編譯後產生的衍生檔,檔案大小動輒上百MB,因為可以重新生成,所以沒必要去追蹤。

過去我只會在專案頭目錄push所有檔案,現在想要忽略這兩個資料夾可以這麼做,在終端機輸入:

vi .gitignore

然後我就可以設定.gitignore這個檔案:

3rd Library/AwesomeMenuProject/AwesomeMenuProject/bin

3rd Library/AwesomeMenuProject/AwesomeMenuProject/obj

儲存後關閉,此後再push所有檔案,就會忽略此bin和obj兩個資料夾囉!

參考:[GIT] 設定.gitignore 忽略檔案不被track

[iOS] 在App間分享資料 (Share Data Between Apps)

過去App的資料是被保護在沙盒(Sandbox)之中,因此無法讓其它App來存取。現在Apple設計一個共享區域,在此區域可以讓不同的App來存取,只是這些App必須是同一個開發者呢!

在App間分享資料 (Share Data Between Apps)

在專案中的Capabilities中打開App Groups,接著創立一個App Groups,我這裡是設定group.happy.share,程式碼中會用到喔~

(繼續閱讀…)

[iOS] 透過iTunes檔案共享 (File Share through iTunes)

有時候我們會想要從電腦把檔案放進APP中,恰好這個APP可以讀取相片或影片,然後我們就可以重新開啟APP,直接享用我們剛匯入檔案的成果!

在這裡我想展示的是,如何將Core Data資料,由第一個設備複製到第二個設備,如此一來,我就能將資料庫複製多份到無限多個設備上。

File Share through iTunes2

首先就是要在專案Info.plist設定Application supports iTunes file sharing (UIFileSharingEnabled)為YES,馬上編譯執行,開啟iTunes軟體,就能看到HappyTest2出現在「檔案共享」清單上喲!表示透過iTunes檔案共享 (File Share through iTunes)功能已開啟~

(繼續閱讀…)

標籤雲