Aquí hay un ejemplo de diferenciación de archivos y directorios de enlaces a archivos y enlaces a directorios.
Los enlaces a archivos o directorios mantienen sus propios atributos (fecha de creación, permisos) separados de sus objetivos.
Los enlaces de archivos pueden eliminarse (por ejemplo, usando "del") sin afectar el archivo de destino.
Los enlaces de directorio se pueden eliminar (por ejemplo, "rmdir") sin afectar el directorio de destino. Tenga cuidado al usar "rd/s". Esto eliminará el destino del enlace de directorio.
La clave FileAttributes
para marcar en FileInfo
y DirectoryInfo
es FileAttributes.ReparsePoint
.
static void Main(string[] args) {
FileInfo file_info = new FileInfo(args[0]);
DirectoryInfo directory_info = new DirectoryInfo(args[0]);
bool is_file = file_info.Exists;
bool is_directory = directory_info.Exists;
if (is_file) {
Console.WriteLine(file_info.ToString() + " is a file");
if (file_info.Attributes.HasFlag(FileAttributes.ReparsePoint))
Console.WriteLine(args[0] + " is a Windows file link");
}
else if (is_directory) {
Console.WriteLine(directory_info.ToString() + " is a directory");
if (directory_info.Attributes.HasFlag(FileAttributes.ReparsePoint))
Console.WriteLine(args[0] + " is a Windows directory link");
}
Si es posible, ¿puede copiar pegar aquí el código completo, necesita entrar en blong, de lo contrario no compilará? – TarmoPikaro
Este código ahora es un [paquete NuGet] (https://www.nuget.org/packages/SymbolicLinkSupport/) y [está en GitHub] (https://github.com/michaelmelancon/symboliclinksupport). –