que tienen una matriz de cadenas de algunas rutas de archivos:¿Cómo puedo convertir una lista de nombres de archivo a una estructura de árbol?
path/to/folder/file.xxx
path/to/other/
path/to/file/file.xx
path/file.x
path/
¿Cómo puedo convertir esta lista para una estructura de árbol? Hasta ahora tengo lo siguiente:
/// <summary>
/// Enumerates types of filesystem nodes.
/// </summary>
public enum FilesystemNodeType
{
/// <summary>
/// Indicates that the node is a file.
/// </summary>
File,
/// <summary>
/// Indicates that the node is a folder.
/// </summary>
Folder
}
/// <summary>
/// Represents a file or folder node.
/// </summary>
public class FilesystemNode
{
private readonly ICollection<FilesystemNode> _children;
/// <summary>
/// Initializes a new instance of the <see cref="FilesystemNode"/> class.
/// </summary>
public FilesystemNode()
{
_children = new LinkedList<FilesystemNode>();
}
/// <summary>
/// Gets or sets the name of the file or folder.
/// </summary>
public string Name { get; set; }
/// <summary>
/// Gets or sets the full path to the file or folder from the root.
/// </summary>
public string Path { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the node is a file or folder.
/// </summary>
public FilesystemNodeType Type { get; set; }
/// <summary>
/// Gets a list of child nodes of this node. The node type must be a folder to have children.
/// </summary>
public ICollection<FilesystemNode> Children
{
get
{
if (Type == FilesystemNodeType.Folder)
return _children;
throw new InvalidOperationException("File nodes cannot have children");
}
}
}
Estoy un poco perdido en la forma de dividir los caminos y todo. Cualquier ruta que termine con/es un directorio, cualquiera que no lo haga, no lo es.
Además, aunque mi entrada siempre contendrá una ruta a la carpeta, ¿cómo podría explicar esa situación si no fuera así?
Por ejemplo, si tuviera la entrada:
path/to/file.c
path/file.c
path/
Cómo me gustaría tener en cuenta el hecho de que path/to/
no se encuentra en la entrada?
Esto me llevó a donde necesitaba, muchas gracias mucho! –
Se agregó resumen de esto aquí: https://gist.github.com/2282389 (para su conveniencia) –
Cómo seleccionar los elementos secundarios de un subnodo, por ejemplo, cómo obtener elementos secundarios de 'subdirectorio' en' directorio1/subdirectorio/archivos' ? –