- 日時: 2007/07/16 10:56
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[ファイル入出力][][] * * キーワード:CSVファイル,TXTファイル,行削除,高速化,, * ***********************************************************************************
元質問:テキストファイルの内容を1行だけ削除したい - イツキ 2003/07/16-12:59 No.4845
あるプログラムを作成中で、そのプログラムでエラーなどが発生した場合にエラーログファイルに、エラー内容を書き出します。 しかし、今後ずっと使っていくプログラムの為、ログファイルを際限なく追加するだけでは、HDDの容量を喰い過ぎてしまいます。 そこでログファイルのサイズを制限し、1MBまでは無条件追加とし、1MBを超えると1件追加するたびに、1件削除しようと思います。 ログは1件=1行でテキストファイルの書き込む予定です。 ここで、一番古い1件のログを削除したいのですが、1行のみ削除というのは、どのようにすればいいでしょうか?
------------------------------------------------------------------------------- Re: テキストファイルの内容を1行だけ削除.. - 花ちゃん 2003/07/16-15:41 No.4848 -------------------------------------------------------------------------------
スマートではありませんが、少しでも高速に処理したいなら、下記の方法でも。
Private Sub Command1_Click() Dim DelTxt As String Dim Fso As New FileSystemObject Dim FsoTS As TextStream Dim DelByt As Long Dim FilePath As String Dim bytArray2() As Byte Dim bytArray() As Byte Dim intFileNo As Integer Dim lngFileLenB As Long FilePath = App.Path & "\test.txt" Set FsoTS = Fso.OpenTextFile(FilePath) DelTxt = FsoTS.ReadLine FsoTS.Close Set FsoTS = Nothing DelByt = LenB(StrConv(DelTxt, vbFromUnicode)) + 2 lngFileLenB = FileLen(FilePath) ReDim bytArray2(DelByt - 1) ReDim bytArray(lngFileLenB - DelByt - 1) intFileNo = FreeFile Open FilePath For Binary As #intFileNo Get #intFileNo, , bytArray2 Get #intFileNo, , bytArray Close #intFileNo Kill FilePath intFileNo = FreeFile ' Text1.Text = StrConv(bytArray, vbUnicode)
Open FilePath For Binary Access Write As #intFileNo Put #intFileNo, , bytArray Close #intFileNo End Sub
|