zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Android中实现ListView圆角效果[转]
    移动终端开发必备知识【转】
    android-supporting-multiple-devices
    Android @+id与@id的区别
    loading android
    Loading Image
    合理的薪酬策略——揭秘万达电商(3)
    Node.js的helloworld 程序
    codeforces Gravity Flip 题解
    HDU 3853 向下向右找出口问题-期望dp
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/15002094.html
Copyright © 2011-2022 走看看