zoukankan      html  css  js  c++  java
  • Linux文件夹操作

    可以使用以下函数来进行文件夹操作

    opendir(3)

    #include<sys/types.h>

    #include<dirent.h>

    DIR *opendir(const char *name);

    功能:打开一个

    参数:

      name:指定了要打开的文件夹的名字

    返回值:

      错误:NULL,errno被设置

      成功:返回一个具体的地址

      

    //DIR 结构
    struct __dirstream
    {
    void *__fd; /* `struct hurd_fd' pointer for descriptor.   */
    char *__data; /* Directory block.   */
    int __entry_data; /* Entry number `__data' corresponds to.   */
    char *__ptr; /* Current pointer into the block.   */
    int __entry_ptr; /* Entry number `__ptr' corresponds to.   */
    size_t __allocation; /* Space allocated for the block.   */
    size_t __size; /* Total valid data in the block.   */
    __libc_lock_define (, __lock) /* Mutex lock for this structure.   */
    };
    typedef struct __dirstream DIR;

    closedir(3)

    #include<sys/types.h>

    #include<dirent.h>

    int *closedir(DIR *dirp);

    功能:

      关闭一个文件夹

    参数:

      dirp:指定了要关闭的文件夹(opendir(3)的返回值)

    返回值:

      错误:-1,errno被设置

      成功:0


    readdir(3)

    struct dirent *readdir(DIR *dirp);

    功能:

      读取文件夹的内容。

    参数:

      dirp:指定文件夹。opendir(3)的返回值

    返回值:

      NULL 到达文件末尾或错误产生,如果是错误产生,则errno被设置

      成功:返回一个结构体struct dirent的地址

      

    struct dirent
    {
       long d_ino; /* inode number 索引节点号 */
       off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
       unsigned short d_reclen; /* length of this d_name 文件名长 */
       unsigned char d_type; /* the type of d_name 文件类型 */
       char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
    }

     另外还有类似文件的操作函数:

    rewinddir(3):将指针定位到首位置

    seeldir(3):设置参数dir目录流目前的读取位置

    telldir(3):返回值记录着一个目录流的当前位置

    scandir(3):扫描dir目录下(不包括子目录)满足filter过滤模式的文件,返回的结果是compare函数经过排序的,并保存在namelist中

    ...


    文件夹包含什么?

    文件夹的所包含的就是文件夹下所有的内容。

    文件夹的元数据。

    使用ls命令查看文件或文件夹的元数据。

    相对于文件,在文件中权限x代表可执行,文件夹中x代表通过,例如,使用cd命令的场合,如果文件夹没有x权限,那么cd命令将报错。

    给test文件夹加上x权限后,去除其w权限,再cd进去,创建文件将报错

  • 相关阅读:
    [SNOI2019]数论
    2018-8-10-C#-写系统日志
    2018-8-10-C#-写系统日志
    2019-3-1-C#-double-好用的扩展
    2019-3-1-C#-double-好用的扩展
    2019-8-31-dotnet-Framework-源代码-·-Ink
    2019-8-31-dotnet-Framework-源代码-·-Ink
    2019-8-31-How-to-fix-nuget-Unrecognized-license-type-MIT-when-pack
    2019-8-31-How-to-fix-nuget-Unrecognized-license-type-MIT-when-pack
    2018-9-30-C#-传入-params-object-长度
  • 原文地址:https://www.cnblogs.com/ptfe/p/10965397.html
Copyright © 2011-2022 走看看