Итак, теперь вот пример кода .... Я испытал это в последние несколько минут (в пустой Sub Main()
Module MainModule
<VBFixedString(830)> Public recordBuffer As String
Sub Main()
Dim fn As Integer = FreeFile()
FileOpen(fn, "c:\temp\test.data", OpenMode.Random, OpenAccess.ReadWrite, OpenShare.Shared, 830)
For i As Integer = 100000 To 100020
' This ensures the buffer is of correct size, even if file is shorter (= new records will be added)
recordBuffer = Space(830)
FileGet(fn, recordBuffer, i, True)
recordBuffer = recordBuffer.ToUpper()
' Here I cut away all bad things that could happen to a string :-/
FilePut(fn, recordBuffer.Substr(0, 830), i, True)
Next i
FileClose(fn)
End Sub
End Module
Я проверил это с файлом, на разных его частях, и файл будет расширен, если вы поместите запись, в которой раньше не было записи (для этого требуется присвоение пространства (830) в recordBuffer до FileGet)
для перемотки строки по строке см. https://msdn.microsoft.com/en-us/library/system.io.streamreader.readline(v=vs.110).aspx?cs-save-lang= 1 & cs-lang = vb # code-snippet-2 – lordkain
Вы не редактируете файлы, их нужно воссоздать. Итак, вам нужно выполнить итерацию файла, и если вы найдете нужную вам ситуацию, начните снова, но на этот раз пишите каждую строку в другой файл, и когда вы нажимаете строки, вам нужно отредактировать, внести изменения и написать эту строку в новый файл, а затем продолжить запись каждой строки. – Steve
текстовый файл не является произвольным доступом - вы не можете обновить его только часть. он должен быть полностью издан. Поскольку вы, вероятно, не можете загрузить столько данных в память, вам придется писать в новый файл. что многие данные, вероятно, должны быть в базе данных. – Plutonix