' updated 11-5-2004 ' updated 11-11-2004 Imports System.IO #Region "Class Documentation" 'UpdateMode ' If UpdateMode = True then all changes to file are written to disk immediately ' If UpdateMode = false then all changes to file are written to disk when object is destroyed ' or when calling the fo_Update Method #End Region Public Class Abe_NovaFileHandler #Region "Class Declarations and Initialiazation" Private iFilePathName As String Private iFileName As String Private iFilePath As String Private iUpdateMode As Boolean Private iArrayForFile() As String Private iLinesInFile As Long Private iUpdateNeeded As Boolean Private FileWasDeleted As Boolean Public Sub New(ByVal File_Pathname As String, ByVal UpdateMode As Boolean) iFilePathName = File_Pathname iUpdateMode = UpdateMode If iFilePathName <> "" Then iLinesInFile = InitializeFile() If iLinesInFile = 9999999 Then End Exit Sub End If LoadFileToArray() GetFilNameAndPath() End If End Sub Protected Overrides Sub finalize() If iUpdateNeeded = True Then iUpdate() End Sub Private Function InitializeFile() As Long Dim i As Long Dim temp As String Dim fs As FileStream Dim fw As StreamReader Try fs = New FileStream(iFilePathName, FileMode.OpenOrCreate, FileAccess.Read) fw = New StreamReader(fs) Catch h As Exception MsgBox(h.Message) Return 9999999 Exit Function End Try Try Do If fw.Peek() < 0 Then Exit Do i = i + 1 temp = fw.ReadLine() Loop fw.Close() Return i Catch ex As IOException fw.Close() MsgBox("Error" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return 0 End Try End Function Private Sub LoadFileToArray() ReDim iArrayForFile(iLinesInFile - 1) Dim i As Long Dim fs As New FileStream(iFilePathName, FileMode.Open, FileAccess.Read) Dim fw As New StreamReader(fs) For i = 1 To iLinesInFile iArrayForFile(i - 1) = fw.ReadLine() Next i fw.Close() End Sub Private Sub iUpdate() If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If Dim i As Long Dim fs As New FileStream(iFilePathName, FileMode.Truncate, FileAccess.Write) Dim fw As New StreamWriter(fs) For i = 1 To iLinesInFile fw.WriteLine(iArrayForFile(i - 1)) Next i fw.Close() iUpdateNeeded = False End Sub Private Sub GetFilNameAndPath() Dim i As Int16 Dim temp As String = "" If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If i = Len(iFilePathName) Do If Mid(iFilePathName, i, 1) <> "\" Then temp = Mid(iFilePathName, i, 1) & temp i -= 1 Else Exit Do End If Loop iFileName = temp iFilePath = Mid(iFilePathName, 1, i - 1) End Sub #End Region #Region "File Update, Clear,Move, Delete, Delete This file, Copy, Rename,Rename thisFile, Backup, restore" Public Sub fo_Update() iUpdate() End Sub Public Sub fo_ClearFile() If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If Dim fs As New FileStream(iFilePathName, FileMode.Truncate) fs.Close() ReDim iArrayForFile(0) iArrayForFile(0) = "" iLinesInFile = 0 End Sub Public Function fo_MoveFile(ByVal Dest_PathName As String) As Boolean If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If Try System.IO.File.Move(iFilePathName, Dest_PathName) Return True Catch ex As Exception MsgBox("Failed to Move File:" & vbNewLine & iFilePathName & vbNewLine & ex.Message.ToString, MsgBoxStyle.Critical, "Error") Return False Exit Function End Try ReDim iArrayForFile(0) iArrayForFile(0) = "" iLinesInFile = 0 End Function Public Function fo_DeleteThisFile(ByVal FilePath_Name As String, ByVal showError_Message As Boolean) As Boolean Try System.IO.File.Delete(FilePath_Name) Return True Catch ex As Exception If showError_Message = True Then _ MsgBox("Failed to Delete:" & vbNewLine & FilePath_Name & vbNewLine & ex.Message.ToString, MsgBoxStyle.Critical, "Error") Return False Exit Function End Try End Function Public Function fo_DeleteFile() As Boolean If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If Try System.IO.File.Delete(iFilePathName) FileWasDeleted = True Return True Catch ex As Exception MsgBox("Failed to Delete:" & vbNewLine & iFilePathName & vbNewLine & ex.Message.ToString, MsgBoxStyle.Critical, "Error") Return False Exit Function End Try ReDim iArrayForFile(0) iArrayForFile(0) = "" iLinesInFile = 0 End Function Public Function fo_CopyFile(ByVal PathAndNametoCopyTo As String) As Boolean If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If If iUpdateNeeded Then iUpdate() Try System.IO.File.Copy(iFilePathName, PathAndNametoCopyTo, True) Return True Catch ex As Exception MsgBox("Failed to Copy File:" & vbNewLine & iFilePathName & vbNewLine & ex.Message.ToString, MsgBoxStyle.Critical, "Error") Return False End Try End Function Public Function fo_RenameFile(ByVal NewFileName As String) As Boolean If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If Try System.IO.File.Move(iFilePathName, iFilePath & "\" & NewFileName) iFilePathName = iFilePath & "\" & NewFileName iFileName = NewFileName Return True Catch ex As Exception MsgBox("Failed to Rename File:" & vbNewLine & iFilePathName & vbNewLine & ex.Message.ToString, MsgBoxStyle.Critical, "Error") Return False End Try End Function Public Function fo_RenameThisFile(ByVal FilePathNametoRename As String, ByVal NewFilePathName As String) As Boolean If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If Try System.IO.File.Move(FilePathNametoRename, NewFilePathName) Return True Catch ex As Exception MsgBox("Failed to Rename File:" & vbNewLine & FilePathNametoRename & " to " & NewFilePathName & vbNewLine & ex.Message.ToString, MsgBoxStyle.Critical, "Error") Return False End Try End Function Public Function fo_BackupFile() As Boolean If FileWasDeleted = True Then MsgBox("Operation Failed. File not found.", MsgBoxStyle.Critical) Return False Exit Function End If If inf_GetFileSize() = 0 Then MsgBox("Normal Backup or Undo Backup Operation Failed. Current File Size=0") Return False Exit Function End If If iUpdateNeeded = True Then iUpdate() Try System.IO.File.Delete(iFilePath & "\FileBackup.txt") Catch End Try fo_CopyFile(iFilePath & "\FileBackup.txt") Return True End Function Public Function fo_Restore() As Boolean '' ''If FileWasDeleted = True Then '' '' MsgBox("Operation Failed. File not found.", MsgBoxStyle.Critical) '' '' Exit Function '' ''End If '' ''If inf_GetFileSize() = 0 Then '' '' MsgBox("Operation Failed. file size=0") '' '' Return False '' '' Exit Function '' ''End If '' ''If iUpdateNeeded = True Then iUpdate() '' ''Try '' '' System.IO.File.Delete(iFilePath & "\FileBackup.txt") '' ''Catch '' ''End Try '' ''fo_CopyFile(iFilePath & "\FileBackup.txt") '' ''Return True End Function #End Region #Region "Read/Write/Info" Public Function inf_GetNumberofLines() As Long If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If Return iLinesInFile End Function Public Function inf_GetFileSize() As Long If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Function End If Dim x As Long Dim fs As New FileStream(iFilePathName, FileMode.Open) x = fs.Length fs.Close() Return x End Function Public Function rw_ReadLine(ByVal LineNumber As Integer, ByVal showER As Boolean) As String If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Return "" Exit Function End If Dim m As Long m = UBound(iArrayForFile) + 1 If LineNumber > m Or LineNumber < 1 Then If showER = True Then MsgBox("Error" & vbNewLine & "Line #" & Format(LineNumber) & " does not Exist in File.", MsgBoxStyle.Critical) Return "" Exit Function End If Return iArrayForFile(LineNumber - 1) End Function Public Sub rw_WriteLine(ByVal Linetext As String) If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If iLinesInFile += 1 ReDim Preserve iArrayForFile(iLinesInFile - 1) iArrayForFile(iLinesInFile - 1) = Linetext iUpdateNeeded = True If iUpdateMode = True Then iUpdate() End Sub #End Region #Region "Edit File" Public Sub ed_RemoveLine(ByVal LineNumber As Long) If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If Dim i As Long If LineNumber > (UBound(iArrayForFile) + 1) Or LineNumber < 1 Then MsgBox("Error" & vbNewLine & "Line #" & Format(LineNumber) & " does not Exist in File.", MsgBoxStyle.Critical) Exit Sub End If iArrayForFile(LineNumber - 1) = "" For i = 0 To (iLinesInFile - 1) If iArrayForFile(i) = "" And i <> (iLinesInFile - 1) Then iArrayForFile(i) = iArrayForFile(i + 1) iArrayForFile(i + 1) = "" End If Next ReDim Preserve iArrayForFile(iLinesInFile - 1) iLinesInFile -= 1 iUpdateNeeded = True If iUpdateMode = True Then iUpdate() End Sub Public Sub ed_ReplaceLine(ByVal LineNumber As Long, ByVal NewLineText As String) If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If If LineNumber > (UBound(iArrayForFile) + 1) Or LineNumber < 1 Then MsgBox("Error" & vbNewLine & "Line #" & Format(LineNumber) & " does not Exist in File.", MsgBoxStyle.Critical) Exit Sub End If iArrayForFile(LineNumber - 1) = NewLineText iUpdateNeeded = True If iUpdateMode = True Then iUpdate() End Sub Public Sub ed_InsertLine(ByVal LineNumberToInsertAfter As Long, ByVal NewLineText As String) If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If Dim i As Long If LineNumberToInsertAfter > (UBound(iArrayForFile) + 1) Or LineNumberToInsertAfter < 1 Then MsgBox("Error" & vbNewLine & "Line #" & Format(LineNumberToInsertAfter) & " does not Exist in File.", MsgBoxStyle.Critical) Exit Sub End If ReDim Preserve iArrayForFile(iLinesInFile) iLinesInFile += 1 i = iLinesInFile iArrayForFile(i - 1) = "" For i = iLinesInFile To (LineNumberToInsertAfter + 1) Step -1 iArrayForFile(i - 1) = iArrayForFile(i - 2) Next i iArrayForFile(LineNumberToInsertAfter) = NewLineText iUpdateNeeded = True If iUpdateMode = True Then iUpdate() End Sub Public Sub ed_RemoveLineWithText(ByVal LineTextToBeRemoved As String) If FileWasDeleted = True Then MsgBox("Operation Failed. File was previously Deleted.", MsgBoxStyle.Critical) Exit Sub End If Dim n As Integer For n = 0 To (iLinesInFile - 1) If iArrayForFile(n) = LineTextToBeRemoved Then ed_RemoveLine(n + 1) End If Next n iUpdateNeeded = True If iUpdateMode = True Then iUpdate() End Sub #End Region #Region "Other: GetFileNameOutofFilePathName" Public Function GetFileNameOutofFilePathName(ByVal filePath_Name As String) As String Dim n As String = "" Dim i As Int16 Do If Mid(filePath_Name, Len(filePath_Name) - i, 1) = "\" Then Exit Do n = Mid(filePath_Name, Len(filePath_Name) - i, 1) & n i += 1 Loop Return n End Function Public Function inf_findlineWithThisvalue(ByVal LineValue As String) As Integer Dim n As String Dim i As Integer Dim c As Integer c = Me.inf_GetNumberofLines For i = 1 To c n = Me.rw_ReadLine(i, False) If n.ToUpper = LineValue.ToUpper Then Return i Exit Function End If Next Return 0 End Function #End Region End Class