NonSoft

フォルダ内の文字コード一覧を表示する
サンプル(C#.NET)


 サンプル(ソース/コード)
<このサンプルの概要>
指定フォルダ内に存在する全てのファイルの文字コードを判定(判別)し一覧表示するサンプル(C#.NET)です。

文字コードの判定には文字コード判定のサンプル(VB6/VB.NET)を使用しています。

もっと簡単に文字コード変換を実現したい場合はこちらのDLLがおすすめです。
文字コード判定/変換DLL(VB6/VB.NET/C#.NET)

VB.NET版はこちらです。
文字コードを判定して指定の文字コードに変換するサンプル(VB.NET)

関連ツールとして、送ってPATHコピーは、
マウス右クリック→送る(SendTo)からファイル一覧のパスや属性や文字コード名を
クリップボードへコピーするツールです。

関連情報
文字コードを判定して指定の文字コードに変換するサンプル(VB.NET)
ADODB.Streamによる文字コード変換のサンプル(VB6/VB.NET)
WideCharToMultiByteとMultiByteToWideCharによる文字コード変換のサンプル(VB6/VB.NET)
文字コード判定/変換ツール(VB6のソース付)
文字コード判定&変換ツール.NET

★フォームモジュール(Form1.vb)
    private void button1_Click(object sender, EventArgs e)
    {
        // 文字コード一覧ファイル削除
        System.IO.File.Delete("codelist.txt");

        // フォルダ内のファイルの一覧(リスト)取得
        String[] flist = new String[] { };
        GetFolderList(@"c:\temp", ref flist);

        for (int i = 0; i <= flist.Length  - 1; i++)
        {
            System.IO.Stream sr = null;
            System.IO.BinaryReader br = null;
            try
            {
                // 入力ファイルをバイナリ形式で入力
                sr = System.IO.File.Open(flist[i],
                    System.IO.FileMode.Open, System.IO.FileAccess.Read);
                br = new System.IO.BinaryReader(sr);
                Byte[] dat = new Byte[] { };
                Array.Resize<Byte>(ref dat, (int)sr.Length);
                dat = br.ReadBytes((int)sr.Length);

                // 文字コード判定
                String cod = JudgeCode(dat);

                // ファイルのPATHと文字コード名を文字コード一覧ファイルに出力
                System.IO.StreamWriter sw = null;
                try
                {
                    sw = new System.IO.StreamWriter("codelist.txt", true,
                        System.Text.Encoding.GetEncoding("Shift-JIS"));
                    sw.WriteLine(flist[i] + "\t" + cod);
                }
                catch (Exception ex2)
                {
                    throw ex2;
                }
                finally
                {
                    if (sw != null) sw.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                // ファイルのクローズ
                if (br != null) br.Close();
                if (sr != null) sr.Close();
            }
        }
    }

    /// <summary>
    /// フォルダ内のファイルの一覧(リスト)取得
    /// </summary>
    /// <param name="ipath">フォルダPATH</param>
    /// <param name="flist">ファイルの一覧(リスト)</param>
    /// <remarks></remarks>
    public void GetFolderList(String ipath, ref String[] flist)
    {
        try
        {
            System.IO.DirectoryInfo curFol = new System.IO.DirectoryInfo(ipath);

            // ファイルの一覧作成
            System.IO.FileInfo[] fil = curFol.GetFiles();
            for (int i = 0; i <= fil.Length - 1; i++)
            {
                Array.Resize<String>(ref flist, (int)flist.Length + 1);
                flist[flist.Length -1] = fil[i].FullName;
            }

            // サブフォルダ内のファイル一覧作成
            System.IO.DirectoryInfo[] fol = curFol.GetDirectories();
            for (int i = 0; i <= fol.Length - 1; i++)
            {
                String[] strs = new String[] { };
                GetFolderList(fol[i].FullName, ref strs);
                for (int j = 0; j <= strs.Length - 1; j++)
                {
                    Array.Resize<String>(ref flist, (int)flist.Length + 1);
                    flist[flist.Length - 1] = strs[j];
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }