en primer lugar construir una función para dar el valor de la línea de 'n':
Public Function daValorConfig(ByVal numValor As Long, ByVal nomeFicheiroINI As String) As String
Dim reader As StreamReader = New StreamReader(Application.StartupPath & "\" & nomeFicheiroINI & ".ini")
Dim valor As String = ""
daValorConfig = ""
Dim i As Long = 1
Try
While i <= numValor
valor = reader.ReadLine()
i = i + 1
End While
daValorConfig = valor
reader.Close()
Catch ex As Exception
reader.Close()
MessageBox.Show(ex.Message, "Error: ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Err.Clear()
End Try
End Function
A continuación, crear un procedimiento que escribe el nuevo valor en la línea especificada o mantener la anterior si la línea no es la que se especifica:
Public Sub guardaValorConfig(ByVal dados As String, ByVal numValor As Long, ByVal nomeFicheiroINI As String)
Dim writer As StreamWriter = New StreamWriter(Application.StartupPath & "\" & nomeFicheiroINI & ".ini")
Dim valor As String = ""
Dim i As Long = 1
Try
While i <= numValor
If i = numValor Then
writer.Write(dados)
Else
writer.Write(daValorConfig(i, nomeFicheiroINI))
End If
i = i + 1
End While
writer.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error: ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Err.Clear()
End Try
End Sub
¿Puedo usar StreamWriter para la salida en el mismo archivo de texto o ¿Estás diciendo volver a escribir cada línea en el nuevo archivo y luego cambiarle el nombre al anterior? – Niphoet
Trate de no escribir en el mismo archivo. ¡Es mucho más seguro de esa manera! No pierde casi nada creando un nuevo archivo y sobrescribiendo el anterior. – alex
Puede agregar File.Copy ("output.txt", "foo.txt", true); File.Delete ("salida.txt"); por lo que parece que el archivo original fue sobrescrito. – Axarydax