2012-04-12 269 views

Respuesta

7
Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar") 
My.Computer.FileSystem.WriteAllText("C:\test2.txt", fileReader, False) 

lo que debe utilizar el método ReadAllText del sistema de archivos, pase la ruta como parámetro y utilizar el método replace para reemplazar lo que se desea reemplazar . Para usos más avanzados de reemplazo puede usar expresiones regulares. Puede leer acerca de eso here.

versión más corta:

My.Computer.FileSystem.WriteAllText("C:\test2.txt", My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar"), False) 
+0

Thaks intente esto –

+0

Gracias copie pegué su código en el botón de comando haga clic en evento y cuando construyo el programa, cuando hago clic en el botón no hay reemplazo hecho en el archivo de texto que aún llena con foo. –

+0

Ya veo. The String fileReader contiene el texto correcto ¿no? Tu problema es que el archivo no se actualiza. Mi código fue hecho solo para leer el texto, la escritura aún no estaba hecha, pero actualizaré mi código pronto. –

0

El siguiente ejemplo muestra espero que ayude

Dim lOpenFile As Long 
Dim sFileText As String 
Dim sFileName As String 

sFileName = "C:\test.txt" 

'open the file and read it into a variable 
lOpenFile = FreeFile 
Open sFileName For Input As lOpenFile 
sFileText = Input(LOF(lOpenFile), lOpenFile) 
Close lOpenFile 

'change 'John Doe' to 'Mary Brown' 
sFileText = Replace(sFileText, " John Doe ", " Mary Brown ") 

'write it back to the file 
lOpenFile = FreeFile 
Open sFileName For Output As lOpenFile 
Print #lOpenFile, sFileText 
Close lOpenFile 
+0

Gracias malos tratar este error –

+0

'Open' no se ha declarado. La funcionalidad de E/S de archivos está disponible en el espacio de nombres 'Microsoft.VisualBasic'. \t C: \ Users \ EMACFEL \ AppData \ Local \ Proyectos temporales \ WindowsApplication1 \ Form1.vb WindowsApplication1 –

+0

¿Estoy haciendo algo mal? –

1

me sacó esto de un programa que estaba haciendo, simplemente cortar el rollo que no es necesario.

Private Sub UPDATECODES_Click(sender As Object, e As EventArgs) Handles UPDATECODES.Click 
    Dim NEWCODE As String = NEWCODEBOX.Text 
    Dim CC As String = CURRENTCODE.Text 
    Dim oldcode As String 
    Dim codelines(0 To 1) As String 
    Dim olddate As String 

    Using r1 As New System.IO.StreamReader(CODEDIR & "d.dat") 
     olddate = r1.ReadToEnd 
    End Using 

    Using r2 As New System.IO.StreamReader(CODEDIR & "oc.dat") 
     oldcode = r2.ReadToEnd 
    End Using 

    If System.IO.File.Exists(CODEDIR & "new code.txt") Then 
     System.IO.File.Delete(CODEDIR & "new code.txt") 
    End If 

    If System.IO.File.Exists(CODEDIR & "CC.DAT") Then 
     If IO.File.Exists(CODEDIR & "oc.dat") Then 
      IO.File.Delete(CODEDIR & "OC.DAT") 
     End If 

     My.Computer.FileSystem.RenameFile(CODEDIR & "CC.DAT", "OC.DAT") 
     Dim FILESTREAM As System.IO.FileStream 
     FILESTREAM = New System.IO.FileStream(CODEDIR & "CC.DAT", System.IO.FileMode.Create) 
     FILESTREAM.Close() 
    End If 

    Using WRITER As New System.IO.StreamWriter(CODEDIR & "CC.DAT") 
     WRITER.WriteLine(NEWCODE) 
    End Using 

    Dim currentlines(0 To 1) As String 
    Dim a As Integer 
    Dim TextLine(0 To 1) As String 
    a = 0 

    Using sr As New System.IO.StreamReader(CODEDIR & "internet code.txt") 
     While Not sr.EndOfStream 
      ReDim codelines(0 To a) 
      codelines(a) = sr.ReadLine() 
      codelines(a) = codelines(a).Replace(CURRENTCODE.Text, NEWCODE) 
      codelines(a) = codelines(a).Replace(olddate, DATEBOX1.Text & " - " & DATEBOX2.Text) 
      Dim newfile As String = (CODEDIR & "new code.txt") 
      Using sw As New System.IO.StreamWriter(newfile, True) 
       sw.WriteLine(codelines(a)) 
      End Using 
      a = a + 1 
     End While 
    End Using 

    Using sw2 As New System.IO.StreamWriter(CODEDIR & "d.dat") 
     sw2.WriteLine(date1 & " - " & date2) 
    End Using 

    System.IO.File.Delete(CODEDIR & "internet code.txt") 
    My.Computer.FileSystem.RenameFile(CODEDIR & "new code.txt", "internet code.txt") 
    CURRENTCODE.Text = NEWCODE 
End Sub 
1

Tengo un pequeño programa que escribí que uso para reutilizar el código. Lo uso cuando necesito crear una clase, o un archivo de código, que es casi idéntico a uno existente. Es un programa de formulario básico con cuatro cuadros de texto y un botón que usa el mismo comando que la respuesta aceptada, excepto que las cadenas no están codificadas.

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

    Dim source As String = txtSource.Text 
    Dim destination As String = txtDestination.Text 
    Dim oldText As String = txtOldText.Text 
    Dim newText As String = txtNewText.Text 

    My.Computer.FileSystem.WriteAllText(destination, My.Computer.FileSystem.ReadAllText(source).Replace(oldText, newText), False) 

End Sub 
Cuestiones relacionadas