NTFSDirect es una biblioteca para .NET que nos permite acceder y analizar el Sistema de Archivos NTFS (NT File System) desde una aplicación escrita en C#.
¿Qué ventajas tiene leer directamente el sistema de ficheros NTFS? Pues principalmente la velocidad. Podemos obtener todos los ficheros de un directorio de forma mucho más rápida que con cualquier otro método.
NTFS es el sistema de archivos utilizado por los sistemas operativos Windows desde Windows NT. Proporciona un conjunto robusto de características, incluyendo control de acceso, compresión, cifrado y recuperación de errores.
La MFT es una parte esencial de NTFS, ya que almacena metadatos importantes sobre todos los archivos y directorios en un volumen NTFS. Cada entrada en la MFT representa un archivo o directorio y contiene información como nombre, tamaño, fecha de creación, atributos de seguridad, y más.
NTFSDirect nos permite acceder directamente a la MFT para obtener la información sobre los archivos y directorios en un volumen NTFS. La biblioteca está diseñada para proporcionar a los desarrolladores una herramienta muy rápida para obtener la estructura interna de los archivos y directorios en un volumen NTFS.
Cómo usar NTFSDirect
Podemos añadir la biblioteca a un proyecto de .NET fácilmente, descargando el proyecto desde Github y añadiéndolo a nuestra solución.
Aquí tenéis un ejemplo de cómo utilizar NTFSDirect extraído de la documentación de la librería
string vol = "c:";
var fileList = new NTFSDirect.Enumerator(vol, new [] {".txt", ".md"});
foreach(string file in fileList)
{
FileInfo f = new FileInfo(file);
if (!f.Exists) { continue; } //every file is enumerated even ones we don't have access to.
}
En este caso, encontraríamos todos los ficheros del Volumen C: que tengan extensión .txt
o .md
, y obtendríamos la información de los ficheros. El array de extensiones es opcional, y podríamos omitirlo para obtener todos los ficheros del Volumen.
NTFSDirect es Open Source, y todo el código y documentación está disponible en el repositorio del proyecto en GitHub - NTFSDirect: NTFS MFT