プログラミング

未経験からC#プログラマーになるならできた方が良いこと ~ファイルパス操作編~

ファイル操作、フォルダ操作ときて今回で第3回目

「ファイルパスの操作」

この記事では、開発チームに所属している際に扱っていたファイルパスに関する操作を紹介していきたいと思います。

 

 

そもそもファイルパスの操作ってなに?

ここで、私が言っているファイルパスとはファイルのある場所を示している住所のようなものを指しています。

このファイルパス取得したり、自分のパスより上のパスを取得したり、相対パスから絶対パスを取得したりすることを

 

「ファイルパスの操作」

 

と呼んでいます。

 

これはファイル操作とフォルダ操作と合わせて使うことが多いので、自然にできるぐらいにマスターしてるとよいと思います。

相対パス

あるファイルやフォルダを基準にした相対的なファイルパスです。

..\App

 

絶対パス

フルパスとも呼ばれていて、目的のファイルまでのすべての道筋を表示しているもの。

C:\Program Files\App

 

ファイルパスの扱いをあまり知らずにやらかしてしまったこともあります。

~失敗談~

あるプロジェクトでファイルパスを完全に指定しソースにベタ書きしている状態のまま、お客様環境で動作確認したら全然動かなくてビックリしたことがあります。

単純に自分のパスを取得するようなコードを書けばよかっただけなのですが、焦ってテンパってしまったので早い段階で知っておくと良いです。

 

 

 

現在のファイルパスの取得方(絶対パスの取得)

自分のアプリケーション(拡張子がExeのファイルのある場所)を取得してみましょう

string path;
try
{
    path = System.Environment.CurrentDirectory;
}
catch(Exception ex)
{
    
}

 

現在の階層より上の階層のファイルパスの取得

現在の階層より上の階層を取得したい場合はこちら

string levelUp = "";
string path = "C:\Program Files\dotnet"; // サンプルファイルパス
try
{
   // C:\Program Filesを取得できます。
    levelUp = path.Substring(0, path.LastIndexOf(@"\"));
}
catch (Exception e)
{
}

出力は、「C:\Program Files」というように取得できます。

 

相対パスから絶対パスの取得方法

相対パスをもう一度振り返ってみましょう

相対パス

あるファイルやフォルダを基準にした相対的なファイルパスです。

..\App

 

それと条件として

・現在のディレクトリは、「C:\Program Files\dotnet」

・相対パスは「.\」

 

 

このコードで絶対パス(C:\Program Files\dotnet)を取得できます。

try
{
    string relativePath = System.IO.Path.GetFullPath(".\\");
}
catch (Exception ex)
{

}

 

複数の文字列を 1 つのパスに結合する方法

try
{
    string sampleA = System.IO.Path.Combine(@"C:\Program Files\dotnet", "test");
}
catch (Exception ex)
{

}

出力は、「C:\Program Files\dotnet\test」というように結合できます。

 

このSystem.IO.Path.Combineは、引数を4つまで文字列を入れられます。

 

今回の記事では、このSystem.IO.Path.Combineを使用しましたが

ある程度コーディングになれてきたら、このSystem.IO.Path.Combineと同じ機能ぐらいだったら自分で作ってみてもいいのかなと思います。

 

まとめ

以上でファイルパスについては終了です。

今回の記事の内容は、C#でプロジェクトを作成するにあたって結構な頻度で使うので、ぜひ参考にしてみてください。

 

  • この記事を書いた人
  • 最新記事

よーす

アメリカテキサスに留学&卒業後アメリカ現地(アリゾナ州)就職し、その後、9カ月かけて世界25カ国を旅してました。そんな経験を活かし、現在はC#を中心にソフトフェアの開発をしています。

-プログラミング
-,

Translate »

Copyright © まずここまずここ , All Rights Reserved.