Namespace FileOperations
Public Class FileType
Private VPath As String
Private VNameOnly As String
Private VExtension As String
Private Shared Function GetPath(ByVal name As String) As String
Dim s As String = ""
Dim i, a As Int16
For i = 0 To name.Length - 1
If name.Chars(i) = "\" Then
a = i
End If
Next
For i = 0 To a
s = s & name.Chars(i)
Next
GetPath = s
End Function
Private Shared Function GetName(ByVal name As String) As String
Dim s As String = ""
Dim i, a As Int16
For i = 0 To name.Length - 1
If name.Chars(i) = "\" Then
a = i
End If
Next
For i = a To name.Length - 1
If name.Chars(i) <> "." And i < name.Length - 4 Then
s = s & name.Chars(i)
Else
Exit For
End If
Next
GetName = s
End Function
Private Shared Function GetExtension(ByVal name As String) As String
Dim s As String = ""
Dim i, a As Int16
For i = 0 To name.Length - 1
If name.Chars(i) = "." Then
a = i
End If
Next
For i = a To name.Length - 1
s = s & name.Chars(i)
Next
GetExtension = s
End Function
Public Property FileName()
Get
Return FileName
End Get
Set(ByVal value)
VPath = GetPath(value)
VNameOnly = GetName(value)
VExtension = GetExtension(value)
End Set
End Property
Public ReadOnly Property Path()
Get
Return VPath
End Get
End Property
Public ReadOnly Property NameOnly()
Get
Return VNameOnly
End Get
End Property
Public ReadOnly Property Extension()
Get
Return VExtension
End Get
End Property
Public Sub New(ByVal file As String)
End Sub
End Class
Public Class Search
Public Const TrovaFiles As Int16 = 0
Public Const TrovaTutto As Int16 = 1
Public Structure Position
Dim LineNum As Double
Dim Line As String
End Structure
Public Structure MultiSearch
Dim details As Position
End Structure
Private Shared Function Pos(ByVal toseek As String, ByVal inwhichfind As String) As Int64
Dim a, b As Int64
Pos = -1
For a = 0 To inwhichfind.Length - 1 'Esamina ogni carattere della stringa inwhichfind
If inwhichfind.Chars(a) = toseek.Chars(0) Then 'Se il carattere numero a è uguale al primo carattere di toseek...
For b = 0 To toseek.Length - 1 '...verifica che tutti i caratteri che lo seguono siano uguali a quelli di toseek
If toseek.Chars(b) = inwhichfind.Chars(a + b) Then
If b = toseek.Length - 1 Then
Return a 'E, in questo caso, ritorna l'indice del primo carattere di toseek in inwhichfind
End If
Else
Pos = -1
Exit For 'Altrimenti annulla il ciclo e continua il controllo
End If
Next
Else
Pos = -1
End If
Next
End Function
Public Shared Function FindIn
(ByVal File As FileType,
ByVal Occurrence
As String) As Position
()
Dim r
As New System.
IO.
StreamReader(CType(File.
FileName,
String))
Dim Line As Double = 0.0
Dim Num As Int64 = 0
Dim S As String
Dim Ret() As Position
While Not r.EndOfStream
S = r.ReadLine
Line += 1
If Pos(Occurrence, S) > -1 Then
Num += 1
ReDim Ret(Num)
Ret(Num).Line = S
Ret(Num).LineNum = Line
End If
End While
r.Close()
r = Nothing
Return Ret
End Function
Public Shared Function MultiFindIn
(ByVal file As FileType
(),
ByVal word
As String) As MultiSearch
()
Dim r As System.IO.StreamReader
Dim Line As Double = 0.0
Dim Num As Int64 = 0, i As Int64
Dim S As String
Dim Ret As MultiSearch()
For i
= 0
To file.
Length - 1
r
= New System.
IO.
StreamReader(CType(file(i
).
FileName,
String))
Line = 0.0
While Not r.EndOfStream
S = r.ReadLine
Line += 1
If Pos(word, S) > -1 Then
Num += 1
ReDim Ret(Num)
Ret(Num).details.Line = S
Ret(Num).details.LineNum = Line
End If
End While
r.Close()
r = Nothing
Next
Return Ret
End Function
Public Shared Function ElencaFiles(ByVal PercSorg As String, ByVal TipoFile As String, ByVal InSottoDir As Boolean) As String()
Dim PercAtt As String
Dim NomeFile As String
Dim FileAtt As String
Dim DirNum As Integer
Dim ListaFiles() As String
Dim N As Int64 = -1
If PercSorg.Chars(PercSorg.Length - 1) <> "\" Then
PercSorg = PercSorg & "\"
End If
If Dir(PercSorg, TrovaTutto) <> "" Then
ListaDir.Add(PercSorg)
End If
If InSottoDir Then
DirNum = 1
Do Until DirNum > ListaDir.Count
PercAtt = ListaDir.Item(DirNum)
NomeFile = Dir(PercAtt, TrovaTutto)
Do Until NomeFile = ""
If NomeFile.Chars(0) <> "." Then
FileAtt = PercAtt & NomeFile
If (GetAttr(FileAtt) And vbDirectory) Then
ListaDir.Add(FileAtt & "\")
End If
End If
NomeFile = Dir()
Loop
DirNum = DirNum + 1
Loop
End If
For DirNum = 1 To ListaDir.Count
PercAtt = ListaDir.Item(DirNum)
NomeFile = Dir(PercAtt & TipoFile, TrovaFiles)
Do Until NomeFile = ""
N += 1
ReDim ListaFiles(N)
ListaFiles(N) = NomeFile
NomeFile = Dir()
Loop
Next
Return ListaFiles
End Function
Public Shared Function FindFiles(ByVal PercSorg As String, ByVal Name As String, ByVal InSottoDir As Boolean) As String()
Dim PercAtt As String
Dim NomeFile As String
Dim FileAtt As String
Dim DirNum As Integer
Dim ListaFiles() As String
Dim N As Int64 = -1
Dim TipoFile As String = "*.*"
If PercSorg.Chars(PercSorg.Length - 1) <> "\" Then
PercSorg = PercSorg & "\"
End If
If Dir(PercSorg, TrovaTutto) <> "" Then
ListaDir.Add(PercSorg)
End If
If InSottoDir Then
DirNum = 1
Do Until DirNum > ListaDir.Count
PercAtt = ListaDir.Item(DirNum)
NomeFile = Dir(PercAtt, TrovaTutto)
Do Until NomeFile = ""
If NomeFile.Chars(0) <> "." Then
FileAtt = PercAtt & NomeFile
If (GetAttr(FileAtt) And vbDirectory) Then
ListaDir.Add(FileAtt & "\")
End If
End If
NomeFile = Dir()
Loop
DirNum = DirNum + 1
Loop
End If
For DirNum = 1 To ListaDir.Count
PercAtt = ListaDir.Item(DirNum)
NomeFile = Dir(PercAtt & TipoFile, TrovaFiles)
Do Until NomeFile = ""
If Pos(Name, NomeFile) > -1 Then
N += 1
ReDim ListaFiles(N)
ListaFiles(N) = NomeFile
NomeFile = Dir()
End If
Loop
Next
Return ListaFiles
End Function
Public Shared Function FindComplessFiles(ByVal PercSorg As String, ByVal Name As String, ByVal TipoFile As String, ByVal InSottoDir As Boolean) As String()
Dim PercAtt As String
Dim NomeFile As String
Dim FileAtt As String
Dim DirNum As Integer
Dim ListaFiles() As String
Dim N As Int64 = -1
If PercSorg.Chars(PercSorg.Length - 1) <> "\" Then
PercSorg = PercSorg & "\"
End If
If Dir(PercSorg, TrovaTutto) <> "" Then
ListaDir.Add(PercSorg)
End If
If InSottoDir Then
DirNum = 1
Do Until DirNum > ListaDir.Count
PercAtt = ListaDir.Item(DirNum)
NomeFile = Dir(PercAtt, TrovaTutto)
Do Until NomeFile = ""
If NomeFile.Chars(0) <> "." Then
FileAtt = PercAtt & NomeFile
If (GetAttr(FileAtt) And vbDirectory) Then
ListaDir.Add(FileAtt & "\")
End If
End If
NomeFile = Dir()
Loop
DirNum = DirNum + 1
Loop
End If
For DirNum = 1 To ListaDir.Count
PercAtt = ListaDir.Item(DirNum)
NomeFile = Dir(PercAtt & TipoFile, TrovaFiles)
Do Until NomeFile = ""
If Pos(Name, NomeFile) > -1 Then
N += 1
ReDim ListaFiles(N)
ListaFiles(N) = NomeFile
NomeFile = Dir()
End If
Loop
Next
Return ListaFiles
End Function
End Class
End Namespace