【VB(.net)】 jpgファイルの破損チェック
JPGのSOI、EOIが既定の法則通りに入っていないファイルを検出するプログラムです。
Imports System.IO Module Program '対象フォルダのパス Dim folderpath As String = "C:\Users\USER\Pictures\Screenshots" Sub Main(args As String()) Dim jpgfiles As String() = System.IO.Directory.GetFiles( folderpath, "*.jpg", System.IO.SearchOption.AllDirectories) jpgfiles.ToList().ForEach( (Sub(path) Using fs As New System.IO.FileStream(path, FileMode.Open, FileAccess.Read) Dim Buffer(fs.Length) As Byte fs.Read(Buffer, 0, Buffer.Length) Dim s = BitConverter.ToString(Buffer) '先頭のSOIチェック Dim SOI As Integer = s.IndexOf("FF-D8") 'EOIが存在するかチェック Dim IsEOI As Boolean = s.Substring(s.Length - 8, 8).Equals(("FF-D9-00")) If Not (SOI = 0 And IsEOI) Then Console.WriteLine(path & " is broken jpeg file") End If End Using End Sub)) End Sub End Module
破損したjpgファイルを検出すると、下記のような形でコンソールに出力します。