Я должен сделать следующее:
Измените строку в текстовом файле
[Path] = "c:\this\certain\path\"
с этой строкой
[Path] = "c:\that\other\newer\path\"
Эти пути несомненно будут различными длинами, таким образом, я должен буду или заменить то, что находится в кавычках, или сотрите строку полностью и введите новую, но в том же месте, не добавленном в конец документа.
Вот сделка: из-за того, что файлы хранятся на диске, вы не можете писать в одну строку без обновления каждая строка, которая следует за ней.
Есть несколько способов сделать это, и тот, который наиболее подходит для вашей ситуации, будет зависеть от таких вещей, как размер файла, вы делаете это со многими файлами, где в файле вы ожидаете найти это и т. Д.
, но большую часть времени, что я люблю делать, на самом деле создает копию старого файла ... так как я ищу через файл, ищете строку, мне нужно изменить, я Также написание того, что я прочитал в новое место. Когда я нахожу линию, я выпишу новую информацию. Затем я продолжаю пройти через файл, пока не достигнет конца, когда я закрываю оба потока, удалите оригинал и переименуйте новый.
Одним из быстрых способов является использование readAllLines и WriteAllLines:
Dim ss() As String
ss = File.ReadAllLines([path])
ss(47) = "c:\that\other\newer\path\"
File.WriteAllLines([path], ss)
Если вы не знаете, какую строку изменить, вы можете искать ее в массиве ss.
Если вы действительно точно знаете, как строка, которую вы хотите заменить внешность, и файл, который вы чтете, на самом деле не очень большие, вы можете попытаться просто использовать заменить (), чтобы добавить новую строку вместо старого:
Dim reader As New StreamReader("foo.txt")
Dim writer As New StreamWriter("output.txt")
Dim s = reader.ReadToEnd().Replace("[Path]: C:\oldPath\file.txt", "[Path]: C:\newPath")
writer.Write(s)
Прочитайте текстовый файл в строку, итерацию за каждую строку и проверьте, если он находится в формате:
[Путь] = "...."
(с регулярными выражениями или просто с string.Startswith («[PATH] =»)
)
в этом петле Вы должны писать все остальные линии, и когда вы находитесь на этой строке [PATH], распечатайте модифицированный.
Так что в коде (извините, он находится в C #):
var reader = File.OpenText("foo.txt");
var writer = new StreamWriter("output.txt");
string line;
while ((line=reader.ReadLine()) != null)
{
if (line.StartsWith("[Path]"))
writer.WriteLine("[Path] = \"c:\\that\\other\\newer\\path\\\"");
else
writer.WriteLine(line);
}
, конечно, близко и утилизируйте stremereader и Streamwriter.
Это поможет
Dim thefile As String = "filepath"
Dim lines() As String = System.IO.File.ReadAllLines("filepath")
lines(number of line you want to replace) = "write what you want to replace here"
System.IO.File.WriteAllLines(filepath, lines)