C#

【C#】 ファイルパスの徹底攻略。取得や結合、ファイルの存在チェック

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回はC#における「ファイルパス」の取り扱いについてご紹介します。

項目としては下記の通り。

  • ファイルパスとは?
  • ファイルパスの存在チェック
  • ファイルパスの結合
  • ファイルパスからいろいろな情報の取得

順番に見ていきましょう。

C# ファイルパスとは?

まずは、ファイルパスについて簡単にお話します。

一言でいうと、「ファイルがどこにあるかを示している文字列」です。

ファイルパスについて詳しくは下の記事を参考にしてみてください。

プログラミングの基礎学習- 絶対パスや相対パス -

C# ファイルパスの存在チェック

では早速ファイルパスのが存在するかどうかのチェックをする方法を解説します。

ファイルの存在チェック

ファイルの存在をチェックするにはSystem.IO.File.Existsメソッドを使うことで、そのファイルが存在しているかどうかを調べることができます。

File.Existsメソッドが戻り値がTrueを返せば、ファイルが存在することになります。

string fileName = @"C:test.txt";
if (System.IO.File.Exists(fileName))
{
MessageBox.Show("'" + fileName + "'は存在します。");
}
else
{
MessageBox.Show("'" + fileName + "'は存在しません。");
}

使い方はこんな感じですね。
if, elseなどの条件分岐で使うと便利です。

[C#] 条件によって処理を変えてみる(if, else)

フォルダの存在チェック

同じように、今度はフォルダが存在するかどうかのチェックをする際には、System.IO.Directory.Existsメソッドを使います。

こちらもDirectory.Existsメソッドが戻り値がTrueなら、フォルダが存在していることになります。

サンプルコードを見てみましょう。

string folderName = @"C:test.txt";
if (System.IO.Directory.Exists(folderName))
{
MessageBox.Show("'" + folderName + "'は存在します。");
}
else
{
MessageBox.Show("'" + folderName + "'は存在しません。");
}

基本的にはファイルの存在チェックと同じです。

C# ファイルパスの結合

続いてファイルパスの結合ですが、System.IO.Path.Combineクラスを使います。
早速サンプルコードをみていきましょう。

string path1 = @"C:";
string path2 = @"test.txt";

string path = System.IO.Path.Combine(path1, path2);

MessageBox.Show(path);

実行結果: 

C:test.txt

このように第一引数と第二引数をパスの文字列として結合してくれます。

.Net Framework4 以降の場合

.Net Framework4以降では、Path.Combineのメソッドが強化されました!

今までは上記の通り、結合するパスは第一引数と第二引数のみでしたが、.Net Framework4 以降では、複数のパスを結合することができるようになりました。


// 2つのパスを結合する
path = System.IO.Path.Combine(dir, file);
MessageBox.Show(path);

// 3つのパスを結合する
path = System.IO.Path.Combine(dir, subDir1, file);
MessageBox.Show(path);

// 4つのパスを結合する
path = System.IO.Path.Combine(dir, subDir1, subDir2, file);
MessageBox.Show(path);

便利なので、覚えておくといいですね。

C# ファイルパスから様々な情報の取得

Syste.IO.Pathクラスを使うことで、ファイルのパスに関するさまざまな情報を取得することができます。

例えば、パスからファイル名、拡張子なしのファイル名、拡張子のみ、ディレクトリ名、ルートディレクトリ名の取得などができます。

ちなみに、このクラスを使うときには指定したパス文字列が実際に存在する必要はありません。


//ディレクトリ名の取得
Console.WriteLine(
    System.IO.Path.GetDirectoryName(
        @"C:My DocumentsMy Picturesサンプル.jpg"));
// 実行結果: C:My DocumentsMy Pictures

//拡張子の取得
Console.WriteLine(
    System.IO.Path.GetExtension(
        @"C:My DocumentsMy Picturesサンプル.jpg"));
// 実行結果: .jpg

//ファイル名の取得
Console.WriteLine(
    System.IO.Path.GetFileName(
        @"C:My DocumentsMy Picturesサンプル.jpg"));
// 実行結果: サンプル.jpg

//ファイル名(拡張子なし)の取得
Console.WriteLine
    (System.IO.Path.GetFileNameWithoutExtension(
        @"C:My DocumentsMy Picturesサンプル.jpg"));
// 実行結果: サンプル

//ルートディレクトリ名の取得
Console.WriteLine(
    System.IO.Path.GetPathRoot(
        @"C:My DocumentsMy Picturesサンプル.jpg"));
// 実行結果: C:

このように簡単にファイルパス文字列から各要素を取得できます。

まとめ

今回はC#でのファイルパスの取り扱いの基礎から学習していきました。

上記で紹介したクラスはどれも便利で簡単なので、ファイルパスを扱う際はぜひ使ってください。
「今日から私はプログラマ」では他にもC#の記事がありますので、よければ参考にしてみてくださいね。

[C#] Windows.Formsのイベントが発生する順番は?

プログラミング必須ツール『テキストエディタ』とは?現役エンジニアのおすすめも紹介!

C# 世界一わかるデリゲート(delegate)について


 

Kindle Unlimitedで無料で本が読める

 

Kindle Unlimitedを無料で試す

 

なら最初の30日間は無料でコーディング・デザイン・ブログ・英語・Youtubeの参考書・キャリア・副業・マーケティング・漫画・美容知識・雑誌などが読み放題です。

人気の本もあるので是非お試ししてみてください!30日以内に解約すればお金は全くかかりません。

 


最近の投稿

【今すぐ行動しよう】フリーランスエンジニアとブログの相性は抜群!

フリーランスエンジニアがスキルや経験から得たビジネスノウハウを共有する手段として「ブログ」は非常におすすめです。自身のスキルや知識のアウトプットや、実際に自分が経験したことを共有して同じような境遇の人の手助けになるような情報を公開することで自分に帰ってくるメリットは非常に多いです。今回はそのあたりについて紹介していきます。

【経験談】フリーランスのエンジニアは本当に大変なの?安定のコツやポイント

フリーランスのエンジニアは「大変だからやめとけ」という話をよく聞くので、そのことについて現役でフリーランスエンジニアとして生活している私が、その話の実態を解説しようと思います。フリーランスエンジニアの大変なところはもちろんありますが、それ以上にメリットが多いので私個人的には非常におすすめしています。

【幸福度UP】フリーランスエンジニアの「田舎暮らし」実現できます

フリーランスエンジニアとして田舎で暮らす人が増えてるって聞くけど、本当なのかな?どうやったら実現できるのか?今回はフリーランスエンジニアとして田舎で生活をしたいという方向けに、実現可能なのか、実現するにはどうすれば良いのかをご紹介します。

【単価交渉で収入アップ】フリーランスが単価交渉を成功させる4つのポイント

フリーランスが収入をアップさせるための重要な手段のひとつに「単価交渉」があります。今回は、現役でフリーランスとしてエンジニアをしている私が実践して効果のあった単価交渉の方法やコツをご紹介します。

【 今なら無料!】タスク管理ツール「Backlog」を無料で使う方法と手順

今回は、普段のタスク管理からプロジェクトの管理まで幅広く使えるツール「Backlog」を無料で使うための方法とその手段を画像つきで紹介しました。もし気に入らなければ、期間内に解約してしまえば費用はかかりません。また、以外と知られていない「フリープラン」も紹介しているので、是非参考にしてみてください。

Copyright© FUNA BLOG , 2021 All Rights Reserved.