CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Pregunta, Modificacion Archivos
Güorker:
No hay nada que agradecer.
Te deseo suerte en tu proceso de aprendizaje, y te animo a que mantengas una constancia e iniciativa.
Saludos
akira:
Lo logre pude hacer una parte del codigo, el lunes voy a hacer el post, pero aun asi me quedan un par de dudas que me gustaria aclarar.
SAludos.
akira:
Tengo el siguiente problema, en el text box no me imprime los avisos uno abajo del otro.
[/CODE]
Option Explicit On
Option Strict Off
Imports System
Imports System.IO
Imports System.Diagnostics
Imports Microsoft.VisualBasic
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Código generado por el Diseñador de Windows Forms "
Public Sub New()
MyBase.New()
'El Diseñador de Windows Forms requiere esta llamada.
InitializeComponent()
'Agregar cualquier inicialización después de la llamada a InitializeComponent()
End Sub
'Form reemplaza a Dispose para limpiar la lista de componentes.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Requerido por el Diseñador de Windows Forms
Private components As System.ComponentModel.IContainer
'NOTA: el Diseñador de Windows Forms requiere el siguiente procedimiento
'Puede modificarse utilizando el Diseñador de Windows Forms.
'No lo modifique con el editor de código.
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents txt_watchpath As System.Windows.Forms.TextBox
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents btn_startwatch As System.Windows.Forms.Button
Friend WithEvents btn_stop As System.Windows.Forms.Button
Friend WithEvents txt_folderactivity As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label
Me.txt_watchpath = New System.Windows.Forms.TextBox
Me.Label2 = New System.Windows.Forms.Label
Me.btn_startwatch = New System.Windows.Forms.Button
Me.btn_stop = New System.Windows.Forms.Button
Me.txt_folderactivity = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(8, 40)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(152, 16)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Ingresar Carpeta a Scannear"
'
'txt_watchpath
'
Me.txt_watchpath.Location = New System.Drawing.Point(160, 40)
Me.txt_watchpath.Name = "txt_watchpath"
Me.txt_watchpath.Size = New System.Drawing.Size(248, 20)
Me.txt_watchpath.TabIndex = 1
Me.txt_watchpath.Text = ""
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(24, 112)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(120, 16)
Me.Label2.TabIndex = 2
Me.Label2.Text = "Actividad en la carpeta"
'
'btn_startwatch
'
Me.btn_startwatch.Location = New System.Drawing.Point(440, 40)
Me.btn_startwatch.Name = "btn_startwatch"
Me.btn_startwatch.Size = New System.Drawing.Size(120, 24)
Me.btn_startwatch.TabIndex = 3
Me.btn_startwatch.Text = "Empezar"
'
'btn_stop
'
Me.btn_stop.Location = New System.Drawing.Point(440, 80)
Me.btn_stop.Name = "btn_stop"
Me.btn_stop.Size = New System.Drawing.Size(120, 24)
Me.btn_stop.TabIndex = 4
Me.btn_stop.Text = "Detener"
'
'txt_folderactivity
'
Me.txt_folderactivity.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.txt_folderactivity.AutoSize = False
Me.txt_folderactivity.Location = New System.Drawing.Point(24, 136)
Me.txt_folderactivity.Name = "txt_folderactivity"
Me.txt_folderactivity.Size = New System.Drawing.Size(552, 216)
Me.txt_folderactivity.TabIndex = 5
Me.txt_folderactivity.Text = ""
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(592, 365)
Me.Controls.Add(Me.txt_folderactivity)
Me.Controls.Add(Me.btn_stop)
Me.Controls.Add(Me.btn_startwatch)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.txt_watchpath)
Me.Controls.Add(Me.Label1)
Me.Name = "Form1"
Me.Text = "File Logger"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public watchfolder As FileSystemWatcher
Private Sub btn_startwatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_startwatch.Click
watchfolder = New System.IO.FileSystemWatcher
watchfolder.Path = txt_watchpath.Text
watchfolder.NotifyFilter = IO.NotifyFilters.DirectoryName
watchfolder.NotifyFilter = watchfolder.NotifyFilter Or _
IO.NotifyFilters.FileName
watchfolder.NotifyFilter = watchfolder.NotifyFilter Or _
IO.NotifyFilters.Attributes
AddHandler watchfolder.Created, AddressOf logchange
AddHandler watchfolder.Deleted, AddressOf logchange
AddHandler watchfolder.Renamed, AddressOf logrename
watchfolder.EnableRaisingEvents = True
btn_startwatch.Enabled = False
btn_stop.Enabled = True
End Sub
Private Sub logchange(ByVal source As Object, ByVal e As _
System.IO.FileSystemEventArgs)
Dim sr As StreamWriter
Dim f As String = e.FullPath
Dim arc As New System.IO.FileInfo(f)
Dim dt As DateTime = DateTime.Now
Const FILE_NAME As String = "C:\logbckp.txt"
If File.Exists(FILE_NAME) = True Then
sr = File.AppendText(FILE_NAME)
If e.ChangeType = IO.WatcherChangeTypes.Created Then
sr.WriteLine("El archivo " & e.FullPath & _
" ha sido creado" & vbCrLf)
txt_folderactivity.Text &= "El archivo " & e.FullPath & _
" ha sido creado" & vbCrLf
End If
If e.ChangeType = IO.WatcherChangeTypes.Deleted Then
sr.WriteLine("El archivo " & e.FullPath & _
" ha sido borrado" & vbCrLf)
txt_folderactivity.Text &= "El archivo " & e.FullPath & _
" ha sido borrado" & vbCrLf
End If
sr.WriteLine("tamaño archivo en bytes" & arc.Length & _
" fecha de modificacion " & dt.ToString("d") & vbCrLf)
sr.Flush()
sr.Close()
End If
If File.Exists(FILE_NAME) = False Then
sr = File.CreateText(FILE_NAME)
If e.ChangeType = IO.WatcherChangeTypes.Created Then
sr.WriteLine("El archivo " & e.FullPath & _
" ha sido creado" & vbCrLf)
txt_folderactivity.Text &= "El archivo " & e.FullPath & _
" ha sido creado" & vbCrLf
End If
If e.ChangeType = IO.WatcherChangeTypes.Deleted Then
sr.WriteLine("El archivo " & e.FullPath & _
" ha sido borrado" & vbCrLf)
txt_folderactivity.Text &= "El archivo " & e.FullPath & _
" ha sido borrado" & vbCrLf
End If
sr.WriteLine(" tamaño archivo en bytes" & arc.Length & _
" fecha modificacion " & dt.ToString("d") & vbCrLf)
sr.Flush()
sr.Close()
End If
txt_folderactivity.Text &= " tamaño archivo en bytes" & arc.Length & _
" fecha modificacion " & dt.ToString("d") & vbCrLf
End Sub
Public Sub logrename(ByVal source As Object, ByVal e As _
System.IO.RenamedEventArgs)
Const FILE_NAME As String = "C:\logbckp.txt"
Dim sr As StreamWriter
Dim f As String = e.FullPath
Dim arc As New System.IO.FileInfo(f)
Dim dt As DateTime = DateTime.Now
If File.Exists(FILE_NAME) = True Then
sr = File.AppendText(FILE_NAME)
sr.WriteLine("El Archivo " & e.OldName & _
" ha sido renombrado a " & e.Name & vbCrLf)
sr.WriteLine(" tamaño archivo en bytes" & arc.Length & _
" fecha modificacion " & dt.ToString("d") & vbCrLf)
sr.Flush()
sr.Close()
txt_folderactivity.Text &= "El Archivo " & e.OldName & _
" ha sido renombrado a " & e.Name & vbCrLf
txt_folderactivity.Text &= " tamaño archivo en bytes " & arc.Length & _
" fecha modificacion " & dt.ToString("d") & vbCrLf
End If
If File.Exists(FILE_NAME) = False Then
sr = File.CreateText(FILE_NAME)
sr.WriteLine("El Archivo " & e.OldName & _
" ha sido renombrado a " & e.Name & vbCrLf)
sr.WriteLine(" tamaño archivo en bytes" & arc.Length & _
" fecha modificacion " & dt.ToString("d") & vbCrLf)
sr.Flush()
sr.Close()
txt_folderactivity.Text &= "El Archivo " & e.OldName & _
" ha sido renombrado a " & e.Name & vbCrLf
txt_folderactivity.Text &= " tamaño archivo en bytes " & arc.Length & _
" fecha modificacion " & dt.ToString("d") & vbCrLf
End If
End Sub
Private Sub btn_stop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_stop.Click
watchfolder.EnableRaisingEvents = False
btn_startwatch.Enabled = True
btn_stop.Enabled = False
End Sub
Private Sub txt_watchpath_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_watchpath.TextChanged
End Sub
Private Sub txt_folderactivity_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub txt_folderactivity_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_folderactivity.TextChanged
End Sub
End Class
[CODE]
Güorker:
Mira,
me gustaria ayudarte, pero con ese pedazo trozo de codigo no me aclaro.
Si puedes pon solo el trozo de codigo que te de problemas y a poder ser marca con colores, subrayado, ... la línea que crres que te da el problema.
Porque si no, yo ya tengo suficientes fuentes para prederme en ellos como para andar perdiendome en el de los demas.
Saludos
akira:
Gracias por la respuesta lo que necesitaria hacer es cargar mas de un directorio en el tipo filesystemwatcher.path, osea que me vea los eventos en mas de un direcotio, ej. C:\TEMP y C:\PRUEBA, como hago esto?
Desde ya muchas gracias.
Saludos, aca paso el codigo donde defino eso.
--- Código: Text --- watchfolder = New System.IO.FileSystemWatcher watchfolder.Path = txt_watchpath.Text watchfolder.IncludeSubdirectories = True watchfolder.NotifyFilter = IO.NotifyFilters.DirectoryName watchfolder.NotifyFilter = watchfolder.NotifyFilter Or _ IO.NotifyFilters.FileName watchfolder.NotifyFilter = watchfolder.NotifyFilter Or _ IO.NotifyFilters.Attributes txt_watchpath.text lo reeemplazaria por los directorios que necesito poner, eliminando la entrada de directorios manualmente.
Gracias.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa