C operaciones de directorio de archivos y extensiones de lenguaje


En esta sección se extienden un poco más operaciones de directorio conocimiento y de archivo, ya que tal conocimiento viene a tiempo de funcionamiento, por lo que después de un tiempo de funcionamiento de la introducción sección.

A, funciones de biblioteca de acceso

función de acceso se utiliza para determinar la corriente de acceso de los usuarios del sistema operativo para el archivo o directorio.

Incluir el archivo de cabecera:

#include <unistd.h>

declaración de la función:

int access(const char *pathname, int mode);

parámetros:

archivo de nombre de ruta o el nombre de directorio, puede ser un archivo o directorio del directorio actual, se puede enumerar la ruta completa.

Se requiere determinación de modo de acceso. Unistd.h predefinido archivo de cabecera es el siguiente:

#define R_OK 4     // R_OK 只判断是否有读权限
#define W_OK 2    // W_OK 只判断是否有写权限
#define X_OK 1     // X_OK 判断是否有执行权限
#define F_OK 0     // F_OK 只判断是否存在

Devuelve:

Cuando las condiciones se cumplen cuando el modo se devuelve nombre de ruta 0, -1 no está satisfecho.

En el desarrollo real, la función de acceso es principalmente utilizado para determinar si existe un archivo o directorio.

Dos funciones de biblioteca, stat

1, la estructura stat

la estructura struct stat a la información del estado tienda para archivos y directorios, de la siguiente manera:

struct stat
{
  dev_t st_dev;   // device 文件的设备编号
  ino_t st_ino;   // inode 文件的i-node
  mode_t st_mode;   // protection 文件的类型和存取的权限
  nlink_t st_nlink;   // number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.
  uid_t st_uid;   // user ID of owner 文件所有者的用户识别码
  gid_t st_gid;   // group ID of owner 文件所有者的组识别码
  dev_t st_rdev;  // device type 若此文件为设备文件, 则为其设备编号
  off_t st_size;  // total size, in bytes 文件大小, 以字节计算
  unsigned long st_blksize;  // blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.
  unsigned long st_blocks;  // number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.
  time_t st_atime;  // time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、 utime、read、write 与tructate 时改变.
  time_t st_mtime;  // time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、 utime 和write 时才会改变
  time_t st_ctime;  // time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、 权限被更改时更新
};

variables miembro estructura struct stat son más para el programador centrarse en los miembros st_mode, st_size y st_mtime en él. Nota st_mtime tiempo es una expresión entera requiere que el programador formato de conversión de código de escritura.

Muchos miembros st_mode valor o determinados usando los dos macros siguientes.

S_ISREG (st_mode) 是否为一般文件 
S_ISDIR (st_mode) 是否为目录 

2, funciones de biblioteca stat

Incluir el archivo de cabecera:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

declaración de la función:

int stat(const char *path, struct stat *buf);

la función stat para obtener el archivo o directorio información de la ruta especificada y guarda la información en una estructura en la buf, la implementación exitosa devuelve 0, -1 fracaso.

Ejemplo (book145.c)

/*
 * 程序名:book145.c,此程序演示目录和文件的存取权限和状态信息
 * 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>

// 本程序运行要带一个参数,即文件或目录名
int main(int argc,char *argv[])
{
  if (argc != 2)  { printf("请指定目录或文件名。\n"); return -1; }

  if (access(argv[1],F_OK) != 0) { printf("文件或目录%s不存在。\n",argv[1]); return -1; }

  struct stat ststat;

  // 获取文件的状态信息
  if (stat(argv[1],&ststat) != 0) return -1;

  if (S_ISREG(ststat.st_mode)) printf("%s是一个文件。\n",argv[1]);
  if (S_ISDIR(ststat.st_mode)) printf("%s是一个目录。\n",argv[1]);
}

Los resultados operativos

Aquí Insertar imagen Descripción

Tres funciones de biblioteca, utime

utime función se utiliza para modificar el tiempo de acceso a archivos y hora de modificación.

Incluir el archivo de cabecera:

#include <utime.h>

declaración de la función:

int utime(const char *filename, const struct utimbuf *times);

Descripción de la función: utime () se utiliza para modificar el archivo de parámetros de nombre de archivo tiempo de acceso al nodo-i pertenece. Si los tiempos de parámetro un puntero nulo (NULL),
todo el tiempo de acceso a archivos y cambiar la hora se establecen en el momento actual. estructura Utimbuf se define como sigue:

struct utimbuf
{
  time_t actime;
  time_t modtime;
};

Valor de retorno: Devuelve 0 si se ejecuta con éxito, un fracaso -1.

Cuatro, cambiar el nombre de funciones de biblioteca

función de cambiar el nombre de cambiar el nombre de un archivo o directorio, mv es equivalente al sistema operativo, el programador, el programa rara vez cambiar el nombre de un directorio, pero los archivos de cambio de nombre se utiliza con frecuencia funciones.

Incluir el archivo de cabecera:

#include <stdio.h>

declaración de la función:

int rename(const char *oldpath, const char *newpath);

parámetros:

Anteriormente conocido como archivo o directorio oldpath.

Newpath el nuevo nombre del archivo o directorio.

Valor de retorno: 0 exitosa -1- fracaso.

Cinco, bibliotecas remove

la función de eliminación se utiliza para eliminar un archivo o directorio, el equivalente de un sistema operativo del comando rm.

Incluir el archivo de cabecera:

#include <stdio.h>

declaración de la función:

int remove(const char *pathname);

parámetros:

Archivo o directorio nombre de ruta que desea eliminar.

Valor de retorno: 0 exitosa -1- fracaso.

En sexto lugar, el trabajo de la escuela después de la

1) continúan enriqueciendo su biblioteca, crear un directorio con mkdir cuando, por ejemplo, mkdir ( "/ tmp / aaa / bbb / ccc", 0755);, si el directorio principal (/ tmp / AAA o / tmp / aaa no existe / bbb no existe), es incapaz de crear / tmp / aaa / bbb / ccc directorio, esto no es una necesidad programador, queremos escribir una función, si no existe el directorio principal, crear un directorio padre, un nivel crear, declarar la función de la siguiente manera:

int MKDIR(const char *pathname);

2) para preparar un documento para obtener una función de tiempo, la siguiente instrucción:

// 获取文件的时间,即modtime
void FileMTime(const char *in_FullFileName,char *out_ModTime);

out_ModTime formato es "HH24 aaaa-mm-dd: mi: ss".

3) escribir una función para obtener el tamaño del archivo, la siguiente declaración:

// 获取文件的大小,返回字节数
int FileSize(const char *in_FullFileName);

4) la función de cambio de nombre tiene una escasez, si no existe el directorio de nombre de archivo de destino newpath el directorio padre, el fracaso devuelve la función, vuelva a escribir una nueva función renombrar, si newpath no existe el directorio padre, crear newpath directorio padre, y luego cambiar el nombre, declaración de la función de la siguiente manera:

int RENAME(const char *oldpath, const char *newpath);

5) El segundo parámetro es una estructura de función utime utimbuf, inconveniente a utilizar en el desarrollo real, esperamos formato de hora es una cadena, tales como: "08/02/2019 12:05:02", utime anular una función, la misma función y utime, pero el segundo parámetro de tiempo de declaración de la función formato de cadena es la siguiente:

int UTIME(const char *filename, const char *strtime);

Siete, aviso de copyright

C Tecnología de Red de Lenguaje artículo original, que se reproduce por favor indique el enlace de la fuente con el artículo, el autor y original.
Fuente: C Tecnología de red Idioma (www.freecplus.net)
Autor: Ética código de Agricultura

Si los errores tipográficos o errores de artículos, contenido, u otras sugerencias y comentarios, por favor mensaje yo correcta, muchas gracias! ! !

Publicó un artículo original · ganado elogios 2 · Vistas 6738

Supongo que te gusta

Origin blog.csdn.net/u010806950/article/details/105043839
Recomendado
Clasificación