[2018/03/22] ファイルサイズ取得 (No.8)
[2018/03/22] テキストファイル先頭行削除処理 (No.7)
[2018/03/22] テキストファイル追記処理 (No.6)
[2018/03/22] 指定フォルダ内の全ファイルをクリア (No.5)
[2018/03/22] 指定フォルダ内の全ファイルを削除 (No.4)
-
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
-
指定されたファイルの存在を確認し、ファイルの 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]
PR -
指定されたテキストファイルを読み込み指定でオープンし、一時ファイルを作成し、その一時ファイルを追加指定でオープンします。 読込ファイルの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]
-
追記元のテキストファイルを最初に全て読み込み、追記先のテキストファイルに追加書込みを行います。 テキストファイルのコードは Shift-JIS を想定していますので、エンコーディングは Shift-JIS に設定しています。 テキストファイルの読み込みには System.IO.File.ReadAllText を用います。 テキストファイルの追加書込みには System.IO.File.AppendAllText を用います。
System.IO.File.ReadAllText 関数について
Public Shared Function ReadAllText(path As String, encoding As Encoding) As String path: 読み取り用に開かれるファイルパス。 encoding ファイルの内容に適用されるエンコーディング。 戻り値: ファイルのすべての行を格納している文字列。
System.IO.File.AppendAllText 関数について
Public Shared Sub AppendAllText(path As String, contents As String, encoding As Encoding) path: 指定した文字列の追加先となるファイル。 contents ファイルに追加する文字列。 encoding 使用する文字エンコーディング。
テキストファイル追記処理
''' ----------------------------------------------------------------------- '''
''' テキストファイル追記処理 ''' ''' <param name="astrSrcFileName">追記元データファイル名</param> ''' <param name="astrDesFileName">追記先データファイル名</param> '''正常終了:true エラー発生:false '''作成したファイルを送信ファイルに追記する ''' ----------------------------------------------------------------------- Function AppendTextFile(ByVal astrSrcFileName As String, ByVal astrDesFileName As String) As Boolean '戻り値初期化 AppendTextFile = False Try Dim strFileText As String = "" Dim decFileSize As Decimal = 0 'データファイルサイズ '追記先データファイル存在確認 If System.IO.File.Exists(astrDesFileName) Then 'ファイルサイズ取得 decFileSize = FileLen(astrDesFileName) End If If decFileSize = 0 Or decFileSize = 1 Then 'ファイルサイズが0または1バイトの場合、送信ファイル置き換え(上書き) My.Computer.FileSystem.CopyFile(astrSrcFileName, astrDesFileName, True) Else 'それ以外の場合、送信ファイルに追記 Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS") '作成したファイルのテキストを取得 strFileText = System.IO.File.ReadAllText(astrSrcFileName, enc) '送信ファイルの末尾に追記 System.IO.File.AppendAllText(astrDesFileName, strFileText, enc) End If '正常終了 AppendTextFile = True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]
-
指定されたフォルダの中のファイルを全てクリアする関数です。 フォルダ内のファイル一覧を取得には System.IO.Directory.GetFiles を用います。
取得されたファイル一覧に従って、個別にクリアを繰り返します。 ファイルクリアは System.IO.File.Create でファイルを生成/上書きでファイルをオープンし、すぐにクローズすることで行います。System.IO.Directory.GetFiles 関数について
Public Shared Function GetFiles (path As String) As String() path: 検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。 戻り値: 指定したディレクトリ内のファイルの完全名 (パスを含む) の配列。 ファイルが見つからない場合は空の配列。(空と言うことはLengthが 0 のString配列)
System.IO.File.Create 関数について
Public Shared Function Create (path As String) As FileStream path: 作成するファイルのパスと名前。 戻り値: FileStream で指定したファイルへの読み取り/書き込みアクセスを提供する path
指定フォルダ内の全ファイルをクリア
''' ----------------------------------------------------------------------- '''
''' 指定フォルダ内の全ファイルをクリア ''' ''' <param name="astrDesFolderName">指定フォルダ</param> '''True:正常, False:エラー ''' ----------------------------------------------------------------------- Function ClearFolderFile(ByVal astrDesFolderName As String) As Boolean '戻り値初期化 ClearFolderFile = False Try '指定フォルダ内の全ファイルを取得 Dim arrFiles() As String = System.IO.Directory.GetFiles(astrDesFolderName) '全ファイルクリア For Each strFile As String In arrFiles 'File.Create メソッドを使用してファイルを作成する Using fs As System.IO.FileStream = System.IO.File.Create(strFile) 'ファイルクローズ fs.Close() End Using Next '正常終了 Return True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]
-
指定されたフォルダの中のファイルを全て削除する関数です。 フォルダ内のファイル一覧を取得には System.IO.Directory.GetFiles を用います。
取得されたファイル一覧に従って、個別に削除を繰り返します。 ファイル削除は System.IO.File.Delete を用います。System.IO.Directory.GetFiles 関数について
Public Shared Function GetFiles (path As String) As String() path: 検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。 戻り値: 指定したディレクトリ内のファイルの完全名 (パスを含む) の配列。 ファイルが見つからない場合は空の配列。(空と言うことはLengthが 0 のString配列)
System.IO.File.Delete 関数について
Public Shared Sub Delete (path As String) path: 検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
指定フォルダ内の全ファイル削除関数
''' ----------------------------------------------------------------------- '''
''' 指定フォルダ内の全ファイルを削除 ''' ''' <param name="astrDesFolderName">指定フォルダ</param> '''True:正常, False:エラー ''' ----------------------------------------------------------------------- Function DeleteFolder(ByVal astrDesFolderName As String) As Boolean '戻り値初期化 DeleteFolder = False Try '指定フォルダ内の全ファイルを取得 Dim arrFiles() As String = System.IO.Directory.GetFiles(astrDesFolderName) '全ファイル削除 For Each strFile As String In arrFiles System.IO.File.Delete(strFile) Next '正常終了 Return True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル追記処理 :[File.ReadAllText,File.AppendAllText]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]