NonSoft

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

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

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

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

★フォームモジュール(Form1.vb)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' 文字コード一覧ファイル削除
        System.IO.File.Delete("codelist.txt")

        ' フォルダ内のファイルの一覧(リスト)取得
        Dim flist As String() = New String(-1) {}
        GetFolderList("c:\temp", flist)

        For i As Integer = 0 To UBound(flist)
            Dim sr As System.IO.Stream = Nothing
            Dim br As System.IO.BinaryReader = Nothing
            Try
                ' 入力ファイルをバイナリ形式で入力
                sr = System.IO.File.Open(flist(i), System.IO.FileMode.Open, System.IO.FileAccess.Read)
                br = New System.IO.BinaryReader(sr)
                Dim dat() As Byte = New Byte(sr.Length - 1) {}
                dat = br.ReadBytes(sr.Length)

                ' 文字コード判定
                Dim cod As String = JudgeCode(dat)

                ' ファイルのPATHと文字コード名を文字コード一覧ファイルに出力
                Dim sw As IO.StreamWriter = Nothing
                Try
                    sw = New IO.StreamWriter("codelist.txt", True, System.Text.Encoding.GetEncoding("Shift-JIS"))
                    sw.WriteLine(flist(i) & vbTab & cod)
                Catch ex2 As Exception
                Finally
                    If sw Is Nothing = False Then sw.Close()
                End Try
            Catch ex As Exception
            Finally
                ' ファイルのクローズ
                If br Is Nothing = False Then br.Close()
                If sr Is Nothing = False Then sr.Close()
            End Try
        Next
    End Sub

    ''' <summary>
    ''' フォルダ内のファイルの一覧(リスト)取得
    ''' </summary>
    ''' <param name="ipath">フォルダPATH</param>
    ''' <param name="flist">ファイルの一覧(リスト)</param>
    ''' <remarks></remarks>
    Public Sub GetFolderList(ByVal ipath As String, ByRef flist As String())
        Try
            Dim curFol As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(ipath)

            ' ファイルの一覧作成
            Dim fil As System.IO.FileInfo() = curFol.GetFiles()
            For i As Integer = 0 To UBound(fil)
                ReDim Preserve flist(UBound(flist) + 1)
                flist(UBound(flist)) = fil(i).FullName
            Next

            ' サブフォルダ内のファイル一覧作成
            Dim fol As System.IO.DirectoryInfo() = curFol.GetDirectories()
            For i As Integer = 0 To UBound(fol)
                Dim strs As String() = New String(-1) {}
                GetFolderList(fol(i).FullName, strs)
                For j As Integer = 0 To UBound(strs)
                    ReDim Preserve flist(UBound(flist) + 1)
                    flist(UBound(flist)) = strs(j)
                Next
            Next
        Catch ex As Exception
            Throw ex
        End Try
    End Sub