晴耕雨読

working in the fields on fine days and reading books on rainy days

VB.NET の IO 関連のメソッド

VB.NET で入出力関連の関数・メソッドの一覧

System.IO

ファイルの新規作成 (File.Create)

'Imports System.Text

Dim stream As FileStream = File.Create("C:\temp\test.txt") 'ファイル作成
Dim data As Byte() = Encoding.UTF8.GetBytes("ABC")
stream.Write(data, 0, data.Length) '「ABC」がファイルに書き込まれる
stream.Close()

ディレクトリの作成 (Directory.CreateDirectory)

Dim dirInfo As DirectoryInfo = Directory.CreateDirectory("C:\temp\a")
Console.WriteLine(dirInfo.FullName()) ' => C:\temp\a

ファイル・ディレクトリ情報 (FileInfo, DirectoryInfo)

'ファイル情報
Dim fileInfo As New FileInfo("C:\Windows\explorer.exe")
If fileInfo.Exists Then
    Console.WriteLine(fileInfo.FullName)      ' => C:\Windows\explorer.exe
    Console.WriteLine(fileInfo.DirectoryName) ' => C:\Windows
    Console.WriteLine(fileInfo.Name)          ' => explorer.exe
    Console.WriteLine(fileInfo.Extension)     ' => .exe
    Console.WriteLine(fileInfo.Length)        ' => 4624880
End If

'ディレクトリ情報
Dim dirInfo As New DirectoryInfo("C:\Windows")
For Each file As FileInfo In dirInfo.EnumerateFiles
    Console.WriteLine(file.FullName)
Next
' => C:\Windows\bfsvc.exe
' => C:\Windows\bootstat.dat
' => C:\Windows\Core.xml
' => C:\Windows\DtcInstall.log
' => C:\Windows\explorer.exe
' => C:\Windows\HelpPane.exe
'    ...省略...

ファイル一覧の取得 (directoryInfo.GetFiles)

Dim dirInfo As New DirectoryInfo("C:\temp")

' 現在のディレクトリのみ検索
Dim files As FileInfo() = dirInfo.GetFiles("*.txt")
For Each file As FileInfo In files
    Console.WriteLine(file.FullName)
Next
' => C:\temp\test.txt
' => C:\temp\test2.txt

' 現在のディレクトリとすべてのサブディレクトリから検索
Dim allFiles As FileInfo() = dirInfo.GetFiles("*.txt", SearchOption.AllDirectories)
For Each file As FileInfo In allFiles
    Console.WriteLine(file.FullName)
Next
' => C:\temp\test.txt
' => C:\temp\test2.txt
' => C:\temp\a\1.txt
' => C:\temp\a\2.txt
' => C:\temp\a\b1\3.txt
' => C:\temp\a\b2\4.txt

メモリストリーム (MemoryStream)

' Imports System.Text

Dim stream As New MemoryStream

' ストリームに書き込む
Dim data1 As Byte() = Encoding.UTF8.GetBytes("ABC")
stream.Write(data1, 0, data1.Length)
Dim data2 As Byte() = Encoding.UTF8.GetBytes("DEFG")
stream.Write(data2, 0, data2.Length)
Console.WriteLine(Encoding.UTF8.GetString(stream.GetBuffer))
' => ABCDEFG

' 現在位置の移動
stream.Seek(0, SeekOrigin.Begin)

' ストリームから読み込む
Dim readData(10) As Byte
stream.Read(readData, 0, 4) ' 4byte読み込む
Console.WriteLine(Encoding.UTF8.GetString(readData))
' => ABCD