11章:チュートリアル10:ファイルとディレクトリの操作の作成

    作成2013.03.05

  1. 参照元情報
     ファイルとディレクトリの操作の作成は(Visual Basic ガイド ツアー)
    「ファイルとディレクトリの操作」にジャンプする
     作成方法の詳細は上記を参照願います。


  2. ファイルとディレクトリの操作の完成ファイル
     バイナリ ファイルを読み取るの解説とおりに作業を実施すると、プロジェクトファイル群が完成しますが、若干の修正を加えて作成しました。
     完成ファイルは以下からダウンロードできます。
     ダウンロード後は解凍してから使用してください。
      [ ファイルとディレクトリの操作]をダウンロードする。
     解凍すると「FileExplorer」フォルダーがあります。
    注(1)「FileExplorer」フォルダーの「FileExplorer.sln」ファイルをダブルクリックすると「Microsoft Visual Basic 2010 Express」が起動します。
    注(2)メニューの「ウインド」_「ウインドレイアウトのリセット」で標準に戻ります。
    注(3)「ソリューションエクスプローラ」ウインドウ内の「Form1.vb」をダブルクリックすると「デザイン」が表示されます。
    注(4)メニューの「表示」_「コード」を選択するとコードが表示されます。
    注(5)「FileExplorer.sln」の動作確認は「デバッグ」_「デバッグ開始」で実行します。デバッグ機能を用いて動作確認を行います。


  3. FileExplorerの実行
    (1)「Microsoft Visual Basic 2010 Express」のデバッグ機能を使用します。
    (2)「デバッグ」_「デバッグ開始」を選択します。
    (3)操作画面が表示されます。
    (4)実行ボタンを押します。
    (5)ファイルリストを作成するフォルダーを選択してOKボタンを押します。
    (6)保存場所と保存ファイル名を設定してOKボタンを押します。
    (7)指定ファイルにファイルリストが保存されます。


  4. 新規プロジェクトの作成
    (1)新規プロジェクト
     新規プロジェクトを作成すると「デザイナー」にはForm1が自動生成されます。

    (2) Formコード
    Public Class Form1
    End Class
    が自動生成されます。

    (3) パーツレイアウト
     Form1にButton、FolderBrowserDialog、SaveFileDialogをツールボックスから設定します。
     SaveFileDialogの「Filterを(*.txt)|*.txt」に設定します。


  5. Public Class Form1の全コード
    Public Class Form1
        Private Sub browseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles browseButton.Click
            Dim i As Integer    'カウント変数生成
            'FolderBrowserDialogを開く
            If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
                '変I数fileNamesをSystem.Collections.ObjectModel.ReadOnlyCollection(Of String)型で生成
                Dim fileNames As System.Collections.ObjectModel.ReadOnlyCollection(Of String) _
                 = My.Computer.FileSystem.GetFiles(FolderBrowserDialog1.SelectedPath, FileIO.SearchOption.SearchAllSubDirectories, "*.*")
                '変I数OutTextをString型で生成
                Dim OutText As String = "Size:bytes " & vbTab & "Modified: " & vbTab & "File: " & vbCrLf
                'fileNames.Count - 1まで繰り返し
                For i = 0 To fileNames.Count - 1
                    '変I数thisFileをSystem.IO.FileInfo型で生成
                    Dim thisFile As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(fileNames(i))
                    '変I数OutTextにSizeとModifiedとFileNameを加算
                    OutText = OutText & thisFile.Length.ToString & vbTab & thisFile.LastWriteTime.ToString & vbTab & thisFile.FullName & vbCrLf
                Next i
                'SaveFileDialogを開く
                If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
                    'OutTextの内容をファイルに出力
                    My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName, OutText, append:=False)
                End If
            End If
        End Sub
    End Class
    


  6. コードの解説
    (1)FolderBrowserDialog1.ShowDialog()は)FolderBrowserDialogを開きます。
    (2)Dim fileNames As System.Collections.ObjectModel.ReadOnlyCollection(Of String) _
    = My.Computer.FileSystem.GetFiles(FolderBrowserDialog1.SelectedPath, FileIO.SearchOption.SearchAllSubDirectories, "*.*")はちょっと長いコードです。変I数fileNamesをSystem.Collections.ObjectModel.ReadOnlyCollection(Of String)型で生成します。初期値はMy.Computer.FileSystem.GetFiles()で選択したフォルダー内の全ファイルリストとなります。
    (3)Dim OutText As String = "Size:bytes " & vbTab & "Modified: " & vbTab & "File: " & vbCrLfは出力文字列の1行目となります。
    (4)Dim thisFile As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo(fileNames(i))は変I数thisFileをSystem.IO.FileInfo型で生成します。初期値はMy.Computer.FileSystem.GetFileInfo(fileNames(i))となります。
    (5)OutText = OutText & thisFile.Length.ToString & vbTab & thisFile.LastWriteTime.ToString & vbTab & thisFile.FullName & vbCrLfは変I数OutTextにSizeとModifiedとFileNameを加算します。2行目以降となります。
    (6)SaveFileDialog1.ShowDialog() はaveFileDialogを開きます。
    (7) My.Computer.FileSystem.WriteAllText(SaveFileDialog1.FileName, OutText, append:=False)はOutTextの内容をファイルに出力します。


    感想:このプログラムは、フォルダー内のファイルの参照方法とファイル情報の参照方法を簡潔に示しています。複雑に階層になったフォルダーに保存されているファイルを手作業で探すのは面倒な作業です。
     学習用のサンプルプログラムですが、意外と実用性があります。







12章:チュートリアル11:印刷とレポート の作成に行く。

トップページに戻る。