| 日時: 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
 
 
 |