前端之家收集整理的这篇文章主要介绍了
vb.net ファイル操作クラス,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Imports System.IO Imports System.IO.Compression Public Class FileOperate ''' <summary> ''' 指定したフォルダ下に、ファイルを圧縮する ''' </summary> ''' <param name="sourceFileFolderPath"></param> ''' <param name="targetFileFolderPath"></param> ''' <param name="zipFileName"></param> ''' <remarks></remarks> Public Shared Sub ZipFileToDirectory(ByVal sourceFileFolderPath As String,ByVal targetFileFolderPath As String,ByVal zipFileName As String) ZipFile.CreateFromDirectory(sourceFileFolderPath,targetFileFolderPath & zipFileName,CompressionLevel.Fastest,False) End Sub ''' <summary> ''' ZIPファイルを指定したフォルダ下に解凍する ''' </summary> ''' <param name="zipFilePath"></param> ''' <param name="extractFilePath"></param> ''' <remarks></remarks> Public Shared Sub ExtractZipFileToDirectory(ByVal zipFilePath As String,ByVal extractFilePath As String) ZipFile.ExtractToDirectory(zipFilePath,extractFilePath) End Sub ''' <summary> ''' 指定したフォルダ下に、ファイル有無の判断 ''' </summary> ''' <param name="folderPath">指定したフォルダパル</param> ''' <returns>true:ファイル有る、false:ファイル無し</returns> ''' <remarks></remarks> Public Shared Function IsExistsFileInFolder(ByVal folderPath As String) As Boolean Dim fso = CreateObject("Scripting.FileSystemObject") If fso.GetFolder(folderPath).Files.Count = 0 Then '不存在 Return False Else '存在 Return True End If End Function ''' <summary> ''' 指定したフォルダ下のファイルを削除する ''' </summary> ''' <param name="deleteFileFolderPath"></param> ''' <param name="fileType">*.*(全て)/*.csv(csvファイルだけ)など</param> ''' <remarks></remarks> Public Shared Sub DeleteAllFillInDirectory(ByVal deleteFileFolderPath As String,ByVal fileType As String) For Each foundFile As String In My.Computer.FileSystem.GetFiles( _ deleteFileFolderPath,_ FileIO.SearchOption.SearchAllSubDirectories,_ fileType) My.Computer.FileSystem.DeleteFile(foundFile,_ FileIO.UIOption.OnlyErrorDialogs,_ FileIO.RecycleOption.DeletePermanently) Next End Sub ''' <summary> ''' ファイルのコピー ''' </summary> ''' <param name="sourceFilePath">元ファイルパス</param> ''' <param name="targetFilePath">目標ファイルパス</param> ''' <remarks></remarks> Public Shared Sub CopyFile(ByVal sourceFilePath As String,ByVal targetFilePath As String) '\\コンピュータ名\共有名\(ディレクトリ名\)ファイル名 ' 既に同名のファイルが存在していても上書きする場合 System.IO.File.Copy(sourceFilePath,targetFilePath,True) End Sub ''' <summary> ''' フォルダ下のファイル全てコピーする ''' </summary> ''' <param name="sourceFolderPath"></param> ''' <param name="targetFolderPath"></param> ''' <remarks></remarks> Public Shared Sub CopyAllFiles(ByVal sourceFolderPath As String,ByVal targetFolderPath As String) My.Computer.FileSystem.CopyDirectory(sourceFolderPath,targetFolderPath,True) End Sub ''' <summary> ''' ファイルの移動 ''' </summary> ''' <param name="sourceFolderPath"></param> ''' <param name="targetFolderPath"></param> ''' <remarks></remarks> Public Shared Sub MoveAllFiles(ByVal sourceFolderPath As String,True) DeleteAllFillInDirectory(sourceFolderPath,"*.csv") End Sub ''' <summary> ''' フォルダサイズの取得 ''' </summary> ''' <param name="dirInfo"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function GetDirectorySize( _ ByVal dirInfo As DirectoryInfo) As Long Dim size As Long = 0 'フォルダ内の全ファイルの合計サイズを計算する Dim fi As FileInfo For Each fi In dirInfo.GetFiles() size += fi.Length Next fi 'サブフォルダのサイズを合計していく Dim di As DirectoryInfo For Each di In dirInfo.GetDirectories() size += GetDirectorySize(di) Next di '結果を返す Return size End Function ''' <summary> ''' フォルダ内、最新のファイル名を取得する ''' </summary> ''' <param name="targetFolderPath"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function GetLatestFileName(ByVal targetFolderPath As String) Dim fso,fol,fc,f1,f2 fso = CreateObject("Scripting.FileSystemObject") fol = fso.GetFolder(targetFolderPath) fc = fol.Files For Each f1 In fc If f2 Is Nothing Then f2 = fso.GetFile(f1) End If If f1.DateLastModified > f2.DateLastModified Then f2 = fso.GetFile(f1) End If Next Return f2.Name End Function ''' <summary> ''' CSVファイルの先頭行を削除する ''' </summary> ''' <param name="filePath"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function DeleteCSVHeader(ByVal filePath As String) As Boolean Try 'ファイルを読み込みで開く Dim sr As New System.IO.StreamReader(filePath,System.Text.Encoding.GetEncoding("shift_jis")) '一時ファイルを作成する Dim tmpPath As String = System.IO.Path.GetTempFileName() '一時ファイルを書き込みで開く Dim sw As New System.IO.StreamWriter(tmpPath,False,System.Text.Encoding.GetEncoding("shift_jis")) Dim isFirstLine As Boolean = True '
内容を一行ずつ読み込む While sr.Peek() > -1 '一行読み込む Dim line As String = sr.ReadLine() 'はじめの行であれば、飛ばす If isFirstLine Then isFirstLine = False Continue While End If '一時ファイルに書き込む sw.WriteLine(line) End While '閉じる sr.Close() sw.Close() '一時ファイルと入れ替える System.IO.File.Copy(tmpPath,filePath,True) System.IO.File.Delete(tmpPath) Return True Catch ex As Exception Return False End Try End Function ''' <summary> ''' ファイルとフォルダ操作権限有無の判断 ''' </summary> ''' <param name="path"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function FileOrFolderIsReadOnly(ByVal path As String) ' ファイルやディレクトリの
属性(群)を取得 Dim fas As System.IO.FileAttributes = System.IO.File.GetAttributes(path) '
属性(群)の中に読み取り専用があるかどうかを確認(ビット演算) Dim bReadOnly As Boolean = ((fas And System.IO.FileAttributes.ReadOnly) = System.IO.FileAttributes.ReadOnly) Return bReadOnly End Function ''' <summary> ''' ファイルがロック中かどうかの判断 ''' </summary> ''' <param name="path"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function FileIsLocked(ByVal path As String) Dim stream As FileStream = Nothing Try stream = New FileStream(path,FileMode.Open,FileAccess.ReadWrite,FileShare.None) stream.Close() Catch ex As Exception Return True End Try stream.Close() Return False End Function ''' <summary> ''' ファイル読み込み専用
属性解除 ''' </summary> ''' <param name="path"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function ReleaseReadAttr(ByVal path As String) As Boolean Try Dim fi As New System.IO.FileInfo(path) '読み込み専用
属性があるか調べる If (fi.Attributes And System.IO.FileAttributes.ReadOnly) = System.IO.FileAttributes.ReadOnly Then '読み取り専用
属性を解除する fi.IsReadOnly = False End If Return True Catch ex As Exception Return False End Try End Function ''' <summary> ''' ファイルのサイズを確認 ''' </summary> ''' <param name="path"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function GetFileSize(ByVal path As String) Dim file As New System.IO.FileInfo(path) Return file.Length End Function ''' <summary> ''' ディレクトリアクセスチェック ''' </summary> ''' <param name="path"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function FolderAccessCheck(ByVal path As String) As Boolean Try '実行ユーザ名取得 Dim ident As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent() Dim princ As New System.Security.Principal.WindowsPrincipal(ident) 'ファイルアクセス権所持ユーザと比較 Dim security As System.Security.AccessControl.DirectorySecurity = Directory.GetAccessControl(path) For Each rule As System.Security.AccessControl.FileSystemAccessRule In security.GetAccessRules(True,True,GetType(System.Security.Principal.NTAccount)) If rule.IdentityReference.ToString = princ.Identity.Name Then Return True End If Next Return False Catch ex As Exception Return False End Try Return False End Function End Class
原文链接:https://www.f2er.com/vb/256858.html