• Jueves 14 de Noviembre de 2024, 18:45

Autor Tema:  Re: Fecha De Creacion De Un Fichero  (Leído 4462 veces)

armenzg

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« en: Viernes 23 de Julio de 2004, 20:11 »
0
Hola, necesito conocer cuando se creo un archivo, asi de sencillo, sin embargo, no he encontrado nada en concreto, ni nada que me ayude.

Hay alguna libreria no estandar??
Son las librerias estandar de c++ de bajo nivel??
Deseo saber si es solo una impresion mia.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Fecha De Creacion De Un Fichero
« Respuesta #1 en: Viernes 23 de Julio de 2004, 20:27 »
0
Cuando se creo un archivo creado por un programa tuyo??, osea, llevar un control o ver cuando se creo un archivo en general???. Saludos :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

armenzg

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #2 en: Viernes 23 de Julio de 2004, 20:33 »
0
un archivo cualquiera.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #3 en: Viernes 23 de Julio de 2004, 21:25 »
0
Hola!!!!!!!!!!!!

En GNU/LINUX es

Código: Text
  1.  
  2. stat(......)
  3.  
  4.  

ó

Código: Text
  1.  
  2. lstat(......)
  3.  
  4.  

No me acuerdo pero busca por ahi. En Windows creo q se llama igual, no se.

Salu2!!!!

armenzg

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #4 en: Sábado 24 de Julio de 2004, 00:32 »
0
No me dices nada con stat( ) y lstat( ).
He estado buscando en google y me cuesta encontrar en que libreria estan.
Ni ningun ejemplo simple explicado.
Estoy intentando usar la funcion:
int findfirst(const char *camino, struct ffblk *ffblk, int atrib)
y tambien findnext pero tampoco me funcionan. He encontrado que debo usar la libreria dir.h pero no me lo reconoce el compilador.

Alguien podria poner un ejemplo sencillo??

Electroduende

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #5 en: Sábado 24 de Julio de 2004, 15:09 »
0
Hola  :hola:

deberias acostumbrarte a especificar que sistema operativo usas, que compilador, etc...

En Windows puedes usar la funcion GetFileInformationByHandle para obtener informacion sobre un archivo:
http://msdn.microsoft.com/library/default....ionbyhandle.asp

hasta luego,  :hola:
Electroduende
 :alien:

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #6 en: Sábado 24 de Julio de 2004, 16:29 »
0
armenzg:

Si no encontraste nada con lo q te di es tu problema pero te puedo asegurar son esas y si no mira esto y decime q onda:

Busqueda en GOOGLE poniendo lstat

Me parece q si no sabes usar el google es otro tema

Salu2!!!!!

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #7 en: Sábado 24 de Julio de 2004, 16:47 »
0
Hola de nuevo:

Como la realidad es q me enoje por lo q respondiste, aca va algo hecho en C++ para GNU/LINUX q usa stat hecho por mi. Seguramente no entiendas mucho, pero fijate q stat sirve

Código: Text
  1.  
  2. #include "CDatosArchivosUsuario.h"
  3. #include "CInfoDeArchivos.h"
  4.  
  5. //******************************************************
  6. // Constructor de la clase CDatosArchivosUsuario
  7. //******************************************************
  8. CDatosArchivosUsuario::CDatosArchivosUsuario()
  9. {
  10.   strTamanio = new char[20];
  11.   this->ListaDeArchivos = new CListaDeArchivos;
  12. }
  13. //******************************************************
  14. // Metodo que recorre el directorio indicado por el usuario
  15. // y llama al metodo getDatosArchivoYAgregarALista()
  16. //******************************************************
  17. TError CDatosArchivosUsuario::recorrerDirectorio(TString NombreDirectorio)
  18. {
  19.   struct dirent **ListadeNombres;
  20.  
  21.   //levanto los nombres en la ListadeNombres
  22.   long Longitud = scandir(NombreDirectorio.c_str(), &ListadeNombres, 0, alphasort);
  23.   //verifico si encontro alguno
  24.  
  25.   if (Longitud < 0)
  26.   {
  27.     // Error al levantar los nombres de los archivos
  28.     return ERROR_DIRECTORIO;
  29.   }
  30.   else
  31.   {
  32.     long i = 0;
  33.     while(i < Longitud)
  34.     {
  35.       if (getDatosArchivoYAgregarALista((const char*)ListadeNombres[i]->d_name,NombreDirectorio) == ERROR_DIRECTORIO)
  36.       {
  37.         free(ListadeNombres);
  38.         return ERROR_BUSQUEDA_ARCHIVOS;
  39.       }
  40.       free(ListadeNombres[i]);
  41.       i++;
  42.     }
  43.     free(ListadeNombres);
  44.    }
  45.    return OK;  
  46. }
  47. //******************************************************
  48. // Metodo que obtiene los datos del archivo cuyo nombre
  49. // es recibido por parametro. Los agrega a la lista
  50. //******************************************************
  51. TError CDatosArchivosUsuario::getDatosArchivoYAgregarALista(const char* NombreArchivo,TString Directorio)
  52. {
  53.   struct stat EstrStat;
  54.   CInfoDeArchivos InfoArch;
  55.   CNodoListaArchivos Nodo;
  56.  
  57.   TString strFileName;
  58.   strFileName = Directorio.c_str() &#59;
  59.   strFileName += '/';
  60.   strFileName += NombreArchivo&#59;
  61.  
  62.   //Levanto los datos del archivo
  63.   int Error = stat(strFileName.c_str() , &EstrStat);
  64.  
  65.   if(Error == 0)
  66.   {
  67.     if (S_ISREG(EstrStat.st_mode))
  68.     {
  69.        sprintf(strTamanio, "%15d", EstrStat.st_size);
  70.        strFecha = ctime(&EstrStat.st_mtime);
  71.        InfoArch.setNombre(NombreArchivo);
  72.        InfoArch.setTamanio(strTamanio);
  73.        InfoArch.setFechaModificacion(strFecha);
  74.        Nodo.setOperacion('C');      
  75.        Nodo.setInfoDeArchivo(InfoArch);
  76.        ListaDeArchivos->agregaNodoListaArchivos(Nodo);
  77. //       Nodo.limpiar();
  78.     }
  79.   }
  80.   else
  81.   {
  82.     return ERROR_DIRECTORIO;
  83.   }
  84.   return OK;
  85. }
  86. //******************************************************
  87. CListaDeArchivos* CDatosArchivosUsuario::getListaDeArchivos()
  88. {
  89.   return ListaDeArchivos;
  90. }
  91. //******************************************************
  92. // Destructor de la clase CDatosArchivosUsuario
  93. //******************************************************
  94. CDatosArchivosUsuario::~CDatosArchivosUsuario()
  95. {
  96.   delete[] strTamanio;
  97.   delete ListaDeArchivos;
  98. }
  99. //******************************************************
  100.  
  101.  

Salu2!!!!

armenzg

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #8 en: Lunes 23 de Agosto de 2004, 15:29 »
0
La solucion a esta discusion esta en la siguiente direccion:

Solucion a la fecha de creacion de un fichero

Gracias nikokiki, aunque no presupongas el nivel de nadie diciendo que no saben usar el google.

El problema era que buscaba la informacion en español, mientras que en ingles la encontre en un momento.

Y lo unico que necesitaba saber de stat() era cual libreria añadir a mi archivo para poder usarla:
#include <sys/stat.h>

Por cierto, ya que estamos, ¿es stat() una funcion estandar de c++?

Hasta luego!!

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #9 en: Lunes 23 de Agosto de 2004, 19:24 »
0
Hola!!!!!!!!!!!

Haciendo "man stat" en www.google.com/linux sale esto:

Citar
CONFORMING TO
The stat and fstat calls conform to SVr4, SVID, POSIX, X/OPEN, BSD 4.3. The lstat call conforms to 4.3BSD and SVr4. SVr4 documents additional fstat error conditions EINTR, ENOLINK, and EOVERFLOW. SVr4 documents additional stat and lstat error conditions EACCES, EINTR, EMULTIHOP, ENOLINK, and EOVERFLOW. Use of the st_blocks and st_blksize fields may be less portable. (They were introduced in BSD. Are not specified by POSIX. The interpretation differs between systems, and possibly on a single system when NFS mounts are involved.)
POSIX does not describe the S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX bits, but instead demands the use of the macros S_ISDIR(), etc. The S_ISLNK and S_ISSOCK macros are not in POSIX.1-1996, but both will be in the next POSIX standard; the former is from SVID 4v2, the latter from SUSv2.

Unix V7 (and later systems) had S_IREAD, S_IWRITE, S_IEXEC, where POSIX prescribes the synonyms S_IRUSR, S_IWUSR, S_IXUSR.

Por lo q dice no es ANSI, pero si es POSIX y otras q ni sabia q existian (salvo por BSD).

Salu2!!!

P.D.: Pido perdon por mensajes anteriores porque fueron innecesarios

armenzg

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Fecha De Creacion De Un Fichero
« Respuesta #10 en: Martes 24 de Agosto de 2004, 10:34 »
0
Gracias, por la info

PD=Sin problemas nikokiki

Chao!!