Linux C: 從路徑中提取目錄名和文件名


今天無意中發現了兩個函數,可以方便的從給定的路徑中提取目錄名文件名。以前介紹過用strrchr()函數去做的方式(Linux C: 從指定路徑中獲取文件名)。

不多廢話,就是下面這兩個函數:

bool generate_transfer_file(const uint8_t *audio_header, const char *transcode_file_path) {

    if (!audio_header) {
        ALOGE("input <audio_header> can not be null");
        return false;
    }

    if (!transcode_file_path) {
        ALOGE("input <transcode_file_path> can not be null");
        return false;
    }

    FILE *transcode_file = fopen(transcode_file_path, "rb");
    if (!transcode_file) {
        ALOGE("open transcode file failed");
        return false;
    }

    char *dir_name = dirname(transcode_file_path);
    char *file_name = __posix_basename(transcode_file_path);

    ALOGI("dir: %s, file name: %s", dir_name, file_name);

    return true;
}

比如輸入的路徑是:/storage/emulated/0/Android/data/com.realsil.android.common.media/files/dest.aac, 可以輸出:

dir: /storage/emulated/0/Android/data/com.realsil.android.common.media/files, file name: dest.aac

我是在android的環境下測試的,linux的話可能沒有 __posix_basename()函數,可以找找basename()函數。

char *dirname(char *path);
char *basename(char *path);

char *path="/dir1/dir2/dir.suffix";
dirname(path) ==> /dir1/dir2
basename(path) ==> dir.suffix

linux 也內置了這兩個命令。。

使用時不要忘了包含頭文件:libgen.h

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM