libro
www.tuyano.com
初心者のためのC#プログラミング入門

ファイルを利用する (4/5)

作成:2013-09-14 10:46
更新:2013-09-14 10:46

■フォルダ内のファイル/フォルダを得る

では、フォルダのパスを元に、その外側や内側にあるフォルダやファイルを調べるためのメソッドについて整理していきましょう。

ファイルやフォルダを扱う場合、3つのクラスの役割について理解しておく必要があります。それは「Path」「File」「Directory」です。これらはそれぞれ以下のような働きをします。

Path――ファイルやフォルダのパスを扱うための機能を提供する。
File――ファイルを操作する機能を提供する。
Directory――ディレクトリ(フォルダ)を操作する機能を提供する。

ファイルやフォルダを扱うと一口にいっても、機能によってはそれがFileにあったりPathにあったりするので注意が必要です。慣れないうちは、「これはファイルの機能なのか、パスの機能なのか」を考えながら使うようにしましょう。

・外側のフォルダパスを得る
string 変数 = Path.GetDirectoryName();

・パスからファイル名を得る
string 変数 = Path.GetFileName();

・ファイルの拡張子を得る
string 変数 = Path.GetExtention();

・フォルダ内にある全ファイルを得る
string[] 変数 = Directory.GetFiles( フォルダパス );

・フォルダ内にある全ディレクトリを得る
string[] 変数 = Directory.GetDirectories( フォルダパス );

・ディレクトリがあるかどうか調べる
bool 変数 = Directory.Exists( フォルダパス );

・ファイルがあるかどうか調べる
bool 変数 = File.Exists( フォルダパス );

実際の利用例として、「マイドキュメント」の中にある全ファイルの名前を表示するサンプルを掲載しておきます。実行してボタンを押すと、TextBoxにファイル名を書き出します。ここでは、以下のようにして「マイドキュメント」内の全ファイルを取り出しています。

・「マイドキュメント」のパスを得る
string doc = Environment.GetFolderPath
        (Environment.SpecialFolder.MyDocuments);

・その中の全ファイルを得る
string[] files = Directory.GetFiles(doc);
これで中にあるファイルのパスが配列として取り出されます。後はforeachの繰り返しを使い、配列から順に値を取り出して、そのファイル名を変数にまとめていきます。
string fname = Path.GetFileName(file);
result += fname + Environment.NewLine;
Path.GetFileNameでファイルの名前が取り出せますが、これをまとめるときにEnvironment.NewLineというものを一緒につけています。このNewLineは、その環境での改行コードを示すプロパティです。これで1つ1つのファイル名を改行してつなげていた、というわけです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

namespace MyFrmApp
{
    public class MyForm : Form
    {
        private Label label;
        private TextBox box;
        private Button btn;
         
        public MyForm()
        {
            this.Width = 500;
            this.Height = 500;
            setupControls();
        }
        public void setupControls()
        {
            label = new Label();
            label.Text = "type text:";
            label.Font = new Font("Geneva",12,FontStyle.Regular);
            label.Height = 30;
            label.Width = 500;
            this.Controls.Add(label);
            box = new TextBox();
            box.Multiline = true;
            box.Width = 425;
            box.Height = 300;
            box.Top = 50;
            box.Left = 25;
            this.Controls.Add(box);
            btn = new Button();
            btn.Text = "click";
            btn.Height = 30;
            btn.Width = 100;
            btn.Top = 360;
            btn.Left = 100;
            btn.Click += btn_Click;
            this.Controls.Add(btn);
        }
         
         private void btn_Click(object sender, System.EventArgs e)
        {
                string doc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                string[] files = Directory.GetFiles(doc);
                string result = "";
                foreach(string file in files)
                {
                    string fname = Path.GetFileName(file);
                    result += fname + Environment.NewLine;
                }
                box.Text = result;
        }
    }
}


※関連コンテンツ

「初心者のためのC#プログラミング入門」に戻る