-
指定されたフォルダ名の最終文字が、ディレクトリの分離文字でない場合には、その文字を付加する関数です。 System.IO.Path.DirectorySeparatorChar はパス文字列の、ディレクトリレベルを区切るために使用する、 プラットフォーム固有の文字として定義されていますのでこれを使用します。
フォルダ名の最終文字列"\"チェック
''' ----------------------------------------------------------------------------- '''''' フォルダ名の最終文字列"\"チェック ''' ''' <param name="strSrcFolder">フォルダ名</param> '''修正後のフォルダ名 ''' ----------------------------------------------------------------------------- Private Function ChkLastDirectorySeparatorChar(ByVal strSrcFolder As String) As String ' Dim strFolder As String = strSrcFolder Try '指定が空文字ならば空文字を返す If strFolder = "" Then Return "" End If '最終文字が"\"でなければ、"\"を付加する If strFolder.Chars((strFolder.Length - 1)) <> System.IO.Path.DirectorySeparatorChar Then strFolder &= System.IO.Path.DirectorySeparatorChar End If Return strFolder Catch ex As Exception Return strSrcFolder End Try End Function
関連する記事
⇒文字列定数(改行、タブ、バックスペース等)について
⇒文字列変換関数(StrConv)で変換が途中で切れる
⇒文字列変換関数(StrConv)の使い方
PR -
指定されたコピー元ファイルの存在を確認し、ファイルの FileInfo を取得し、 FileInfoのファイル長が0より大きい場合に、指定されたコピー先ファイルに上書きコピーを行う関数です。
コピー処理は、System.IO.File.Copy により上書きフラグをONして処理を行います。System.IO.FileInfo クラスについて
■コンストラクタ Public Sub New ( fileName ) fileName: ファイルのドライブ名からの完全パス名または相対ファイル名。 ■プロパティ抜粋 ・Length (Long) :現在のファイルのサイズをバイト単位で取得します。 ・Name (String) :ファイルの名前を取得します。ファイル拡張子が含まれています。 ・FullName (String) :ファイルのフルパス名を取得します。 ・DirectoryName(String) :ディレクトリの絶対パスを表す文字列。 ・Extension (String) :ファイルの拡張子部分を表す文字列を取得します。ファイル上書きコピー
''' ----------------------------------------------------------------------------- '''''' ファイル上書きコピー ''' ''' <param name="astrSrcFilePath">コピー元ファイルフルパス名</param> ''' <param name="astrDesFilePath">コピー先ファイルフルパス名</param> '''True:正常終了, False:エラー '''コピー元ファイルが存在しない場合、処理無し ''' ----------------------------------------------------------------------------- Public Function CopyFileOverwrite(ByVal astrSrcFilePath As String, ByVal astrDesFilePath As String) As Boolean '戻り値初期化 CopyFileOverwrite = False Try 'コピー元ファイル存在確認 If System.IO.File.Exists(astrSrcFilePath) = False Then '入力用ファイルが存在しない場合は、OKとする Return True End If Dim fileinfo As New System.IO.FileInfo(astrSrcFilePath) 'ファイルサイズ取得 If fileinfo.Length = 0 Then 'サイズ0の場合は、処理無しで正常戻り Return True End If 'コピー元入力用ファイルからコピー先ファイル上書きコピー System.IO.File.Copy(astrSrcFilePath, astrDesFilePath, True) '正常終了 Return True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
-
指定されたテキストファイルパスとエンコーディングで StreamReader でオープンし、 ファイルを順次 StreamReader.Peek() 関数で読み込み、その回数でレコード件数を取得します。 StreamReader.Peek() 関数で読み込まれたデータは捨てています。
この関数自体は、指定ファイルの存在をチェックしていませんので、必要であればファイルオープン前に確認し、 ファイルが存在しない戻り値を返す必要があります。テキストファイルレコード件数取得
''' ----------------------------------------------------------------------------- '''''' テキストファイルレコード件数取得 ''' ''' <param name="astrSrcFileName">入力ファイルフルパス名</param> ''' <param name="enc">ファイルのエンコーディング</param> '''レコード件数(-1:エラー発生) ''' ----------------------------------------------------------------------------- Public Function GetTextFileCount(ByVal astrSrcFileName As String, ByVal enc As System.Text.Encoding) As Integer '戻り値初期化 GetTextFileCount = -1 Try Dim intCnt As Integer = 0 '入力ファイルをオープンする Using sr As New System.IO.StreamReader(astrSrcFileName, enc) 'ファイルからレコードが存在するまで読込 While (sr.Peek() >= 0) 'ファイルから1行読込 Dim strRead As String = sr.ReadLine() '件数++ intCnt += 1 End While End Using '件数を返す Return intCnt Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]
-
指定されたファイルの存在を確認し、ファイルの FileInfo を取得し、FileInfoのファイル長を取得する関数です。
System.IO.FileInfo クラスについて
■コンストラクタ Public Sub New ( fileName ) fileName: ファイルのドライブ名からの完全パス名または相対ファイル名。 ■プロパティ抜粋 ・Length (Long) :現在のファイルのサイズをバイト単位で取得します。 ・Name (String) :ファイルの名前を取得します。ファイル拡張子が含まれています。 ・FullName (String) :ファイルのフルパス名を取得します。 ・DirectoryName(String) :ディレクトリの絶対パスを表す文字列。 ・Extension (String) :ファイルの拡張子部分を表す文字列を取得します。ファイルサイズ取得
''' ----------------------------------------------------------------------- '''''' ファイルサイズ取得 ''' ''' <param name="astrFileName">ファイル名</param> '''ファイルサイズ ''' ----------------------------------------------------------------------- Function GetFileSize(ByVal astrFileName As String) As Long '戻り値初期化 GetFileSize = 0 Try '出力用ファイルが存在確認 If System.IO.File.Exists(astrFileName) = False Then Exit Function End If 'FileInfo の新しいインスタンスを生成する Dim fi As New System.IO.FileInfo(astrFileName) 'ファイルのサイズを取得 GetFileSize = fi.Length Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]
-
指定されたテキストファイルを読み込み指定でオープンし、一時ファイルを作成し、その一時ファイルを追加指定でオープンします。 読込ファイルの1行目をスキップする様にフラグ処理を行い、順次1行毎に一時ファイルに書込みます。
最終的に、一時ファイルを読込ファイルに上書きコピーし、一時ファイルを削除します。 テキストファイルのコードは Shift-JIS を想定していますので、エンコーディングは Shift-JIS に設定しています。
テキストファイルの読み込みには System.IO.StreamReader クラスを用います。
テキストファイルの追加書込みには System.IO.StreamWriter クラスを用います。テキストファイル先頭行削除処理
''' ----------------------------------------------------------------------- '''''' テキストファイル先頭行削除処理 ''' ''' <param name="astrSrcFileName">処理データファイル名</param> '''正常終了:true エラー発生:false ''' ----------------------------------------------------------------------- Private Function DeleteTopTextFile(ByVal astrSrcFileName As String) As Boolean '戻り値初期化 DeleteTopTextFile = False Dim sr As System.IO.StreamReader = Nothing Dim sw As System.IO.StreamWriter = Nothing Try 'ファイルを読み込みで開く Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis") sr = New System.IO.StreamReader(astrSrcFileName, enc) '一時ファイルを作成する Dim tmpPath As String = System.IO.Path.GetTempFileName() '一時ファイルを書き込みで開く sw = New System.IO.StreamWriter(tmpPath, True, enc) '先頭フラグON Dim blnFirstLine As Boolean = True 'テキストを一行ずつ読込 While sr.Peek() > -1 '一行読込 Dim line As String = sr.ReadLine() '先頭行スキップ If blnFirstLine = True Then '先頭フラグONの場合、OFFしてスキップ blnFirstLine = False Continue While End If '一時ファイル書込 sw.WriteLine(line) End While '閉じる sr.Close() sw.Close() sr = Nothing sw = Nothing '一時ファイルと入れ替える System.IO.File.Copy(tmpPath, astrSrcFileName, True) 'OverWrite System.IO.File.Delete(tmpPath) '正常終了 DeleteTopTextFile = True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する Finally If sr IsNot Nothing Then sr.Close() sr = Nothing End If If sw IsNot Nothing Then sw.Close() sw = Nothing End If End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]