C# でファイルの相対パスを取得する
このチュートリアルでは、C# でファイルの相対パスを取得する方法について説明します。
C# の Path クラスを使用してファイルの相対パスを取得する
このチュートリアルでは、次のディレクトリ構造について説明します。
/ MyProject / Bin Main.exe / Folder Img.jpg Main.cs
プログラムが実行されると、Bin ディレクトリ内の Main.exe ファイルから実行されます。Bin ディレクトリから、または Bin ディレクトリに関連してコードを記述します。Folder ディレクトリ内の Img.jpg ファイルにアクセスしたいと思います。この問題は、次のいずれかの方法で簡単に処理できます。
パスクラスは、C# のファイルパスを含む文字列変数に対して操作を実行します。Path.GetDirectoryName() 関数は、現在のディレクトリに関する情報を取得します。Assembly.GetExecutingAssembly().CodeBase をパラメーターとして Path.GetDirectoryName() 関数に渡して、プロジェクトの出力ディレクトリに関する情報を取得できます。
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
次に、結果のパスを Img.jpg ファイルへの短い相対パスと組み合わせて、Img.jpg ファイルへの相対パスを作成できます。
var iconPath = Path.Combine(outPutDirectory, "Folder\\Img.jpg");
次に、Uri.LocalPath プロパティを使用して、この新しいパスを相対パス文字列に変換できます。
string icon_path = new Uri(iconPath).LocalPath;
次のコード例は、C# で上記のすべての手順を実行する方法を示しています。
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
var iconPath = Path.Combine(outPutDirectory, "Folder\\Img.jpg");
string icon_path = new Uri(iconPath ).LocalPath;
文字列変数 icon_path はファイル Img.jpg への相対パスになり、コードの実行中に画像を参照するために使用できます。
C# の Resources.resx ファイルを使用してファイルの相対パスを取得する
画像アイコンなど、アプリケーションで使用する外部リソースがある場合は、C# で resources.resx ファイルを使用する必要があります。resources.resx ファイルは、アプリケーションが使用するすべてのリソースの記録として機能します。プロジェクトに resources.resx ファイルを追加し、必要なすべてのリソースを参照したら、Resources.Resource1 コマンドを使用してすべてのリソースに簡単にアクセスできます。次のコード例は、C# の resources.resx ファイルを使用してファイルの相対パスを取得する方法を示しています。
using mynamespace.Properties var imgpath = Resources.img;
imgpath 変数は、C# でのコードの実行中、Img.jpg ファイルへの参照として使用できます。この方法は、理解しやすく、記述しやすく、コードを整理し続けるため、以前の方法よりも優先する必要があります。
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