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