By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,908 Members | 2,055 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,908 IT Pros & Developers. It's quick & easy.

Looking for contents in a file every minute

P: n/a
What would i use to look for changes in a file every minute?

Oct 5 '08 #1
Share this Question
Share on Google+
6 Replies


P: n/a
http://msdn.microsoft.com/en-us/libr...emwatcher.aspx
FileSystemWatcher Class

"Andy B" <a_*****@sbcglobal.netwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
What would i use to look for changes in a file every minute?
Oct 5 '08 #2

P: n/a
Hello Andy ,

If you want an event driven aproach go for the file system watcher as this
can give you an event when a change took place in a file
so also when there are 2 changes within a minute you get 2 change events .

Ofcourse you could also just use a timer , read the file in a string
variabel and compare the 2 strings if the 2 strings are not the same the
file has changed
however this wil cost you more CPU / IO cycles
Use the filesystem watcher to get notified when a change on the file took
place , and then reread / process the file
http://msdn.microsoft.com/en-us/libr...emwatcher.aspx

in the link i provided ( also in your previous post ) there is example code
included
in case you missed it
Public Class Watcher

Public Shared Sub Main()

Run()

End Sub

<PermissionSet(SecurityAction.Demand, Name:="FullTrust")_
Private Shared Sub Run

Dim args() As String = System.Environment.GetCommandLineArgs()
' If a directory is not specified, exit the program.
If args.Length <2 Then
' Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)")
Return
End If

' Create a new FileSystemWatcher and set its properties.
Dim watcher As New FileSystemWatcher()
watcher.Path = args(1)
' Watch for changes in LastAccess and LastWrite times, and
' the renaming of files or directories.
watcher.NotifyFilter = (NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or NotifyFilters.FileName Or
NotifyFilters.DirectoryName)
' Only watch text files.
watcher.Filter = "*.txt"

' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
AddHandler watcher.Renamed, AddressOf OnRenamed

' Begin watching.
watcher.EnableRaisingEvents = True

' Wait for the user to quit the program.
Console.WriteLine("Press 'q' to quit the sample.")
While Chr(Console.Read()) <"q"c
End While
End Sub

' Define the event handlers.
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
' Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
End Sub

Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
' Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
End Sub

End Class

Michel Posseth [MCP]
http://www.vbdotnetcoder.com



"Andy B" <a_*****@sbcglobal.netschreef in bericht
news:%2****************@TK2MSFTNGP06.phx.gbl...
What would i use to look for changes in a file every minute?

Oct 5 '08 #3

P: n/a
I need to look for things inside the file every minute even if the file
hasn't changed..
"Michel Posseth [MCP]" <MS**@posseth.comwrote in message
news:%2****************@TK2MSFTNGP05.phx.gbl...
Hello Andy ,

If you want an event driven aproach go for the file system watcher as this
can give you an event when a change took place in a file
so also when there are 2 changes within a minute you get 2 change events .

Ofcourse you could also just use a timer , read the file in a string
variabel and compare the 2 strings if the 2 strings are not the same the
file has changed
however this wil cost you more CPU / IO cycles
Use the filesystem watcher to get notified when a change on the file took
place , and then reread / process the file
http://msdn.microsoft.com/en-us/libr...emwatcher.aspx

in the link i provided ( also in your previous post ) there is example
code included
in case you missed it
Public Class Watcher

Public Shared Sub Main()

Run()

End Sub

<PermissionSet(SecurityAction.Demand, Name:="FullTrust")_
Private Shared Sub Run

Dim args() As String = System.Environment.GetCommandLineArgs()
' If a directory is not specified, exit the program.
If args.Length <2 Then
' Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)")
Return
End If

' Create a new FileSystemWatcher and set its properties.
Dim watcher As New FileSystemWatcher()
watcher.Path = args(1)
' Watch for changes in LastAccess and LastWrite times, and
' the renaming of files or directories.
watcher.NotifyFilter = (NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or NotifyFilters.FileName Or
NotifyFilters.DirectoryName)
' Only watch text files.
watcher.Filter = "*.txt"

' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
AddHandler watcher.Renamed, AddressOf OnRenamed

' Begin watching.
watcher.EnableRaisingEvents = True

' Wait for the user to quit the program.
Console.WriteLine("Press 'q' to quit the sample.")
While Chr(Console.Read()) <"q"c
End While
End Sub

' Define the event handlers.
Private Shared Sub OnChanged(source As Object, e As
FileSystemEventArgs)
' Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
End Sub

Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
' Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
End Sub

End Class

Michel Posseth [MCP]
http://www.vbdotnetcoder.com



"Andy B" <a_*****@sbcglobal.netschreef in bericht
news:%2****************@TK2MSFTNGP06.phx.gbl...
>What would i use to look for changes in a file every minute?


Oct 6 '08 #4

P: n/a
On Oct 6, 1:22*pm, "Andy B" <a_bo...@sbcglobal.netwrote:
I need to look for things inside the file every minute even if the file
hasn't changed..
"Michel Posseth [MCP]" <M...@posseth.comwrote in messagenews:%2****************@TK2MSFTNGP05.phx.gb l...
Hello Andy ,
If you want an event driven aproach go for the file system watcher as this
can give you an event when a change took place in a file
so also when there are 2 changes within a minute you get 2 change events .
Ofcourse you could also just use a timer , read the file in a string
variabel and compare the 2 strings if the 2 strings are not the same the
file has changed
however this wil cost you more CPU / IO cycles
Use the filesystem watcher to get notified when a change on the file took
place , and then reread / process *the file
http://msdn.microsoft.com/en-us/libr...emwatcher.aspx
in the link i provided ( also in your previous post ) there is example
code included
in case you missed it
Public Class Watcher
* *Public Shared Sub Main()
* * * * Run()
* *End Sub
* *<PermissionSet(SecurityAction.Demand, Name:="FullTrust")_
* *Private Shared Sub Run
* * *Dim args() As String = System.Environment.GetCommandLineArgs()
* * * *' If a directory is not specified, exit the program.
* * * *If args.Length <2 Then
* * * * * *' Display the proper way to call the program.
* * * * * *Console.WriteLine("Usage: Watcher.exe (directory)")
* * * * * *Return
* * * *End If
* * * *' Create a new FileSystemWatcher and set its properties.
* * * *Dim watcher As New FileSystemWatcher()
* * * *watcher.Path = args(1)
* * * *' Watch for changes in LastAccess and LastWrite times, and
* * * *' the renaming of files or directories.
* * * *watcher.NotifyFilter = (NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or NotifyFilters.FileName Or
NotifyFilters.DirectoryName)
* * * *' Only watch text files.
* * * *watcher.Filter = "*.txt"
* * * *' Add event handlers.
* * * *AddHandler watcher.Changed, AddressOf OnChanged
* * * *AddHandler watcher.Created, AddressOf OnChanged
* * * *AddHandler watcher.Deleted, AddressOf OnChanged
* * * *AddHandler watcher.Renamed, AddressOf OnRenamed
* * * *' Begin watching.
* * * *watcher.EnableRaisingEvents = True
* * * *' Wait for the user to quit the program.
* * * *Console.WriteLine("Press 'q' to quit the sample.")
* * * *While Chr(Console.Read()) <"q"c
* * * *End While
* *End Sub
* *' Define the event handlers.
* *Private Shared Sub OnChanged(source As Object, e As
FileSystemEventArgs)
* * * *' Specify what is done when a file is changed, created, or deleted.
* * * *Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
* *End Sub
* *Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
* * * *' Specify what is done when a file is renamed.
* * * *Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
* *End Sub
End Class
Michel Posseth [MCP]
http://www.vbdotnetcoder.com
"Andy B" <a_bo...@sbcglobal.netschreef in bericht
news:%2****************@TK2MSFTNGP06.phx.gbl...
What would i use to look for changes in a file every minute?- Hide quoted text -

- Show quoted text -
Hi,
You can use a Timer with 60000-milisecond intervals without needing to
raise changed events. However you need to determine what you really
mean by calling "inside of file" and what you want to look for, for
example, if you're just intending to check a file's LastAccessTime,
you can try to use that:

Untested:

'-----------------------------------------------------
' File to check in every 60 seconds
Dim myfile As New FileInfo("c:\file.exe")

' Optional ArrayList to log LastAccessTime
Dim logArrList As New ArrayList

' Assuming your timer's interval is 60000 ms
Private Sub Timer1_Tick(ByVal sender As Object, _
ByVal System.EventArgs) Handles Timer1.Tick

' Preferably add the last entry to an ArrayList
' to log item as DateTime type

logArrList.Add(myfile.LastAccessTime)

End Sub
'--------------------------------------------------------
Note that, with the code above, the LastAccessTime will be added your
ArrayList eventhough your file's LastAccessTime doesn't change. But
you must be sure to use that because of consuming excessive I/O cycle
and system resources in every 1 minute.

Hope this helps,

Onur Güzel
Oct 6 '08 #5

P: n/a
On Oct 6, 6:22*am, "Andy B" <a_bo...@sbcglobal.netwrote:
I need to look for things inside the file every minute even if the file
hasn't changed..
"Michel Posseth [MCP]" <M...@posseth.comwrote in messagenews:%2****************@TK2MSFTNGP05.phx.gb l...
Hello Andy ,
If you want an event driven aproach go for the file system watcher as this
can give you an event when a change took place in a file
so also when there are 2 changes within a minute you get 2 change events .
Ofcourse you could also just use a timer , read the file in a string
variabel and compare the 2 strings if the 2 strings are not the same the
file has changed
however this wil cost you more CPU / IO cycles
Use the filesystem watcher to get notified when a change on the file took
place , and then reread / process *the file
http://msdn.microsoft.com/en-us/libr...emwatcher.aspx
in the link i provided ( also in your previous post ) there is example
code included
in case you missed it
Public Class Watcher
* *Public Shared Sub Main()
* * * * Run()
* *End Sub
* *<PermissionSet(SecurityAction.Demand, Name:="FullTrust")_
* *Private Shared Sub Run
* * *Dim args() As String = System.Environment.GetCommandLineArgs()
* * * *' If a directory is not specified, exit the program.
* * * *If args.Length <2 Then
* * * * * *' Display the proper way to call the program.
* * * * * *Console.WriteLine("Usage: Watcher.exe (directory)")
* * * * * *Return
* * * *End If
* * * *' Create a new FileSystemWatcher and set its properties.
* * * *Dim watcher As New FileSystemWatcher()
* * * *watcher.Path = args(1)
* * * *' Watch for changes in LastAccess and LastWrite times, and
* * * *' the renaming of files or directories.
* * * *watcher.NotifyFilter = (NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or NotifyFilters.FileName Or
NotifyFilters.DirectoryName)
* * * *' Only watch text files.
* * * *watcher.Filter = "*.txt"
* * * *' Add event handlers.
* * * *AddHandler watcher.Changed, AddressOf OnChanged
* * * *AddHandler watcher.Created, AddressOf OnChanged
* * * *AddHandler watcher.Deleted, AddressOf OnChanged
* * * *AddHandler watcher.Renamed, AddressOf OnRenamed
* * * *' Begin watching.
* * * *watcher.EnableRaisingEvents = True
* * * *' Wait for the user to quit the program.
* * * *Console.WriteLine("Press 'q' to quit the sample.")
* * * *While Chr(Console.Read()) <"q"c
* * * *End While
* *End Sub
* *' Define the event handlers.
* *Private Shared Sub OnChanged(source As Object, e As
FileSystemEventArgs)
* * * *' Specify what is done when a file is changed, created, or deleted.
* * * *Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
* *End Sub
* *Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
* * * *' Specify what is done when a file is renamed.
* * * *Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
* *End Sub
End Class
Michel Posseth [MCP]
http://www.vbdotnetcoder.com
"Andy B" <a_bo...@sbcglobal.netschreef in bericht
news:%2****************@TK2MSFTNGP06.phx.gbl...
What would i use to look for changes in a file every minute?
You should be able to make the assumption that what you have is
correct (as the file hasn't changed) if the FileSystemWatcher hasn't
told you otherwise.

Thanks,

Seth Rowe [MVP]
http://sethrowe.blogspot.com/
Oct 6 '08 #6

P: n/a
>I need to look for things inside the file every minute even if the file
>hasn't changed..
Huh !? why would you do so ,why would a program need to reread the same
values every minute ???
hint : if the contents / values in the file change the filesystem watcher
would raise an event

HTH
Michel


"Andy B" <a_*****@sbcglobal.netschreef in bericht
news:OK**************@TK2MSFTNGP03.phx.gbl...
>I need to look for things inside the file every minute even if the file
hasn't changed..
"Michel Posseth [MCP]" <MS**@posseth.comwrote in message
news:%2****************@TK2MSFTNGP05.phx.gbl...
>Hello Andy ,

If you want an event driven aproach go for the file system watcher as
this can give you an event when a change took place in a file
so also when there are 2 changes within a minute you get 2 change events
.

Ofcourse you could also just use a timer , read the file in a string
variabel and compare the 2 strings if the 2 strings are not the same the
file has changed
however this wil cost you more CPU / IO cycles
Use the filesystem watcher to get notified when a change on the file took
place , and then reread / process the file
http://msdn.microsoft.com/en-us/libr...emwatcher.aspx

in the link i provided ( also in your previous post ) there is example
code included
in case you missed it
Public Class Watcher

Public Shared Sub Main()

Run()

End Sub

<PermissionSet(SecurityAction.Demand, Name:="FullTrust")_
Private Shared Sub Run

Dim args() As String = System.Environment.GetCommandLineArgs()
' If a directory is not specified, exit the program.
If args.Length <2 Then
' Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)")
Return
End If

' Create a new FileSystemWatcher and set its properties.
Dim watcher As New FileSystemWatcher()
watcher.Path = args(1)
' Watch for changes in LastAccess and LastWrite times, and
' the renaming of files or directories.
watcher.NotifyFilter = (NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or NotifyFilters.FileName Or
NotifyFilters.DirectoryName)
' Only watch text files.
watcher.Filter = "*.txt"

' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
AddHandler watcher.Renamed, AddressOf OnRenamed

' Begin watching.
watcher.EnableRaisingEvents = True

' Wait for the user to quit the program.
Console.WriteLine("Press 'q' to quit the sample.")
While Chr(Console.Read()) <"q"c
End While
End Sub

' Define the event handlers.
Private Shared Sub OnChanged(source As Object, e As
FileSystemEventArgs)
' Specify what is done when a file is changed, created, or
deleted.
Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
End Sub

Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
' Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
End Sub

End Class

Michel Posseth [MCP]
http://www.vbdotnetcoder.com



"Andy B" <a_*****@sbcglobal.netschreef in bericht
news:%2****************@TK2MSFTNGP06.phx.gbl...
>>What would i use to look for changes in a file every minute?



Oct 6 '08 #7

This discussion thread is closed

Replies have been disabled for this discussion.