Obtener la ruta relativa de un archivo en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Obtener la ruta relativa de un archivo con la clase Path en C#
  2. Obtener la ruta relativa de un archivo con el archivo Resources.resx en C#
Obtener la ruta relativa de un archivo en C#

Este tutorial discutirá métodos para obtener la ruta relativa de un archivo en C#.

Obtener la ruta relativa de un archivo con la clase Path en C#

Para este tutorial, hablaré sobre la siguiente estructura de directorios.

/ MyProject / Bin Main.exe / Folder Img.jpg Main.cs

Cuando nuestro programa se ejecuta, lo hace desde el archivo Main.exe dentro del directorio Bin. Queremos escribir nuestro código comenzando desde o relativo al directorio Bin. Queremos acceder al archivo Img.jpg dentro del directorio Folder. Este problema se puede solucionar fácilmente mediante uno de los siguientes métodos.

La clase Path realiza operaciones en cadenas de variables que contienen rutas de archivo en C#. La función Path.GetDirectoryName() obtiene la información sobre el directorio actual. Podemos pasar Assembly.GetExecutingAssembly().CodeBase como parámetro a la función Path.GetDirectoryName() para obtener información sobre el directorio de salida de nuestro proyecto.

var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

Entonces podemos combinar la ruta resultante con la ruta relativa corta a nuestro archivo Img.jpg para crear una ruta relativa a nuestro archivo Img.jpg.

var iconPath = Path.Combine(outPutDirectory, "Folder\\Img.jpg");

A continuación, podemos convertir esta nueva ruta en nuestra cadena de ruta relativa con la propiedad Uri.LocalPath.

string icon_path = new Uri(iconPath).LocalPath;

El siguiente ejemplo de código nos muestra cómo podemos realizar todos los pasos mencionados anteriormente en C#.

var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
var iconPath = Path.Combine(outPutDirectory, "Folder\\Img.jpg");
string icon_path = new Uri(iconPath ).LocalPath;

La variable de cadena icon_path es ahora la ruta relativa al archivo Img.jpg y se puede utilizar para hacer referencia a la imagen durante la ejecución de nuestro código.

Obtener la ruta relativa de un archivo con el archivo Resources.resx en C#

Cuando tenemos algunos recursos externos que queremos usar en nuestra aplicación, como un icono de imagen, tenemos que utilizar un archivo resources.resx en C#. El archivo resources.resx funciona como un registro de todos los recursos que utiliza nuestra aplicación. Una vez que hemos agregado un archivo resources.resx en nuestro proyecto y hemos referenciado todos los recursos requeridos, podemos acceder fácilmente a todos los recursos con el comando Resources.Resource1. El siguiente ejemplo de código nos muestra cómo podemos obtener la ruta relativa de un archivo con el archivo resources.resx en C#.

using mynamespace.Properties var imgpath = Resources.img;

La variable imgpath se puede utilizar como referencia al archivo Img.jpg durante la ejecución de nuestro código en C#. Este método debería ser preferido sobre el método anterior porque es más fácil de entender, más simple de escribir y mantiene nuestro código organizado.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp Path

Artículo relacionado - Csharp File