Linux C: 從路徑中提取目錄名和檔名
阿新 • • 發佈:2021-07-12
今天無意中發現了兩個函式,可以方便的從給定的路徑中提取目錄名和檔名。以前介紹過用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