Pregunta

cada vez que creo un objeto FileInfo y accedo a su propiedad lastaccesstime, siempre faltan unos minutos. la ventana de propiedades del archivo permanece constante, sin embargo, la aplicación muestra que generalmente se encuentra unos minutos después del tiempo de la ventana de propiedades.

Además, noté que si arrastro el archivo a la ventana de cmd para pasar el nombre del archivo como un argumento, el tiempo de acceso se actualiza la mayor parte del tiempo, pero no siempre.

¿Qué podría estar causando esto?

a continuación hay un ejemplo:

static void Main(string[] args)
{
    if (args.Length > 0)
    {
        FileInfo fi = new FileInfo(args[0].ToString());
        Console.WriteLine(args[0]);
        if (fi.Exists)
        {
            Console.Write("Current: " + DateTime.Now + "\n");
            Console.Write("LAT: " + fi.LastAccessTime + "\n");
            Console.Write("LWT: " + fi.LastWriteTime + "\n");
            Console.Write("CT: " + fi.CreationTime + "\n");
        }
        Console.ReadKey();
    }
}

texto alternativo http://img407.imageshack.us/img407/4728/propertiesox6 .png texto alternativo http://img380.imageshack.us/img380/7752/appgt0.png

¿Fue útil?

Solución

En mi experiencia, el último tiempo de acceso es notoriamente poco fiable. De acuerdo con http://technet.microsoft.com/en-us/library/ cc781134.aspx ...

  

La última hora de acceso en el disco no siempre es actual porque NTFS busca un intervalo de una hora antes de forzar las actualizaciones de la última hora de acceso al disco. NTFS también retrasa la escritura de la última hora de acceso al disco cuando los usuarios o programas realizan operaciones de solo lectura en un archivo o carpeta, como enumerar el contenido de la carpeta o leer (pero no cambiar) un archivo en la carpeta.

Aparentemente, la copia en memoria será correcta, pero en mi experiencia, puede obtener un valor almacenado en caché que puede estar desactualizado. Además, tenga en cuenta que el último tiempo de acceso puede ser desactivado por el usuario, y está desactivado de forma predeterminada en Vista y 2008.

Otros consejos

El artículo de MSDN con información básica sobre los tiempos de los archivos tiene esto que decir acerca de la resolución del tiempo del archivo y los tiempos del último acceso:

  

Por ejemplo, en FAT, el tiempo de creación tiene una resolución de 10 milisegundos, el tiempo de escritura tiene una resolución de 2 segundos y el tiempo de acceso tiene una resolución de 1 día (en realidad, la fecha de acceso). NTFS retrasa las actualizaciones hasta el último tiempo de acceso para un archivo hasta una hora después del último acceso.

Esto implicaría que tanto en FAT como en NTFS, el último tiempo de escritura generalmente no será muy preciso, aunque no estoy seguro de que los valores exactos que citan sean correctos.

Hmm, posiblemente esto de MSDN :

  

Cuando se llama por primera vez, FileSystemInfo   Llama a Refrescar y devuelve el caché.   Información sobre APIs para obtener atributos.   y así. En llamadas posteriores, usted   Debes llamar a Refresh para obtener lo último.   Copia de la información.

¿Pero está viendo que el LAT siempre está unos minutos en el [futuro | pasado]?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top