C#の拡張子とは?様々な拡張子の取り扱い方をご紹介!
- システム
エンジニア - いくつもある拡張子を、C#で拡張子ごとに取り扱えるようになると便利なのですが。
- プロジェクト
マネージャー - 拡張子ごとにファイルを取り扱えるコードは便利ですね。拡張子の取り扱い方法をご紹介します。
C#での拡張子の扱い方について
今回は、C#での拡張子の扱い方について説明します。C#では、拡張子の取得・削除・変更・検索・判定など、様々なことができます。
C#での拡張子の扱い方に興味のある方はぜひご覧ください。
拡張子の取得
C#では、GetExtensionメソッドを使用して、ファイル名から拡張子を取得できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
|
string filePath = @"C:\path\to\file.jpg";
string fileExt = System.IO.Path.GetExtension(filePath);
System.Console.WriteLine(fileExt); // .jpg
|
実行結果は以下のようになります。
1
|
.jpg
|
このように、GetExtensionメソッドを使用して、ファイル名から拡張子を取得できます。
拡張子の削除
C#では、GetFileNameWithoutExtensionメソッドを使用して、ファイル名から拡張子を除いて取得できます。また、拡張子を置換して削除しても、拡張子を除いて取得できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
string filePath = @"C:\path\to\file.jpg";
string str1 = System.IO.Path.GetFileNameWithoutExtension(filePath);
string str2 = filePath.Replace(System.IO.Path.GetExtension(filePath), "");
System.Console.WriteLine(str1); // file
System.Console.WriteLine(str2); // C:\path\to\file
|
実行結果は以下のようになります。
1
2
|
file
C:\path\to\file
|
このように、GetFileNameWithoutExtensionメソッドやReplaceメソッドを使用して、ファイル名から拡張子を除いて取得できます。
拡張子の変更
C#では、ChangeExtensionメソッドで、拡張子を変更したファイルパスを生成できます。その後、Moveメソッドでファイル名を変更することで拡張子を変更できます。
実際のソースコードを見てみましょう。
事前に
C:\path\to\file1.jpg
C:\path\to\file2.jpg
を作成しておいてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
try
{
// 変更前のファイル名
string orgFile1 = @"C:\path\to\file1.jpg";
string orgFile2 = @"C:\path\to\file2.jpg";
// 拡張子をextに変更した文字列を生成
string newFile1 = System.IO.Path.ChangeExtension(orgFile1, "ext");
// 拡張子は.extと指定しても良い
string newFile2 = System.IO.Path.ChangeExtension(orgFile2, ".ext");
// 変更前のファイル一覧出力
string[] files = System.IO.Directory.GetFiles(@"C:\path\to", "*");
System.Console.WriteLine("変更前ファイル一覧");
foreach (string file in files)
{
System.Console.WriteLine(file);
}
// ファイル名変更
System.IO.File.Move(orgFile1, newFile1);
System.IO.File.Move(orgFile2, newFile2);
// 変更後のファイル一覧出力
files = System.IO.Directory.GetFiles(@"C:\path\to", "*");
System.Console.WriteLine("変更後ファイル一覧");
foreach (string file in files)
{
System.Console.WriteLine(file);
}
}
catch (System.Exception e) {
System.Console.WriteLine(e);
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
変更前ファイル一覧
C:\path\to\file1.jpg
C:\path\to\file2.jpg
変更後ファイル一覧
C:\path\to\file1.ext
C:\path\to\file2.ext
|
拡張子が.extに変更されていることが分かります。また、エクスプローラでも拡張子が変更されていることを確認できます。なお、変更元ファイル名が存在しない場合、FileNotFoundExceptionが発生します。
このように、ファイルの拡張子を変更できます。
拡張子の検索
C#では、指定したディレクトリ配下のファイルについて、拡張子を指定して検索できます。
実際のソースコードを見てみましょう。
事前に C:\path\to ディレクトリ配下には、file1.extおよびfile2.extを格納しておいてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// .extファイルを検索
string[] files = System.IO.Directory.GetFiles(@"C:\path\to", "*.ext");
System.Console.WriteLine("*.ext");
foreach (string file in files)
{
System.Console.WriteLine(file);
}
// .jpgファイルを検索
files = System.IO.Directory.GetFiles(@"C:\path\to", "*.jpg");
System.Console.WriteLine("*.jpg");
foreach (string file in files)
{
System.Console.WriteLine(file);
}
|
実行結果は以下のようになります。
1
2
3
4
|
*.ext
C:\path\to\file1.ext
C:\path\to\file2.ext
*.jpg
|
このように、GetFilesメソッドの引数に拡張子を指定して、ワイルドカードで検索できます。
拡張子の判定
C#では、ファイルパスに特定の拡張子が含まれているかを判定できます。
実際のソースコードを見てみましょう。
ソースコードの先頭に「using System.Linq;」を記述してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 特定の拡張子が含まれているか検索する
var res1 = new string[] { ".doc", ".docx", ".xls", ".xlsx" }.Contains(System.IO.Path.GetExtension(@"C:\path\to\test1.doc").ToLower());
var res2 = new string[] { ".doc", ".docx", ".xls", ".xlsx" }.Contains(System.IO.Path.GetExtension(@"C:\path\to\test1.DOCX").ToLower());
var res3 = new string[] { ".doc", ".docx", ".xls", ".xlsx" }.Contains(System.IO.Path.GetExtension(@"C:\path\to\test1.txt").ToLower());
var res4 = new string[] { ".doc", ".docx", ".xls", ".xlsx" }.Contains(System.IO.Path.GetExtension(@"C:\path\to\test1.PDF").ToLower());
System.Console.WriteLine(res1); // True
System.Console.WriteLine(res2); // True
System.Console.WriteLine(res3); // False
System.Console.WriteLine(res4); // False
|
実行結果は以下のようになります。
1
2
3
4
|
True
True
False
False
|
GetExtensionメソッドで拡張子を取得し、その拡張子が”.doc”, “.docx”, “.xls”, “.xlsx”のいずれかと一致するかをContainsメソッドで判定します。LINQを使用すれば、1行で記述できます。
拡張子については、大文字でも小文字でも判定できるように、ToLowerメソッドですべての拡張子を小文字にしてから比較します。
- システム
エンジニア - これで拡張子の取得や変更、検索まで手軽に行えます!
- プロジェクト
マネージャー - 今回紹介したソースコードを参考に、ご自身でもC#で拡張子を取り扱うコードを使ってください。
C#の拡張子を理解しよう
C#での拡張子の取得・削除・変更・検索・判定方法について紹介しましたが、いかがでしたでしょうか。拡張子の取り扱いについて、様々な操作ができることが分かったのではないでしょうか。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)