faiqaa Ответов: 1

Как обновить текстовый файл, не перезаписывая то, что уже находится внутри?


Мне нужно сохранить различные сведения о клиентах на текстиле, в настоящее время я могу сохранить информацию о клиентах, однако когда я добавляю новые сведения о клиентах, предыдущая информация перезаписывается.

Что я уже пробовал:

Dim Filenum As Integer = FreeFile()

FileOpen(Filenum, "Z:\Desktop\original.txt", OpenMode.Output)

PrintLine(Filenum, txtBoxFullName.Text & txtBoxFullAddress.Text & txtBoxDateOfBirth.Text & txtBoxEmailAddress.Text & txtBoxPostcode.Text & txtBoxPhoneNumber.Text & txtBoxItemDetails.Text & txtBoxRepairDescription.Text & txtBoxDateOfBirth.Text)

FileClose(Filenum)

MessageBox.Show("Customer/s has been successfully registered")

[no name]

Я не знаю VB, но после быстрого поиска в Google я думаю, что вы можете использовать FileOpen(1, "TextFile1.txt", OpenMode.Append)
Кстати: подумайте о том, как бы вы расшифровали свои строки :-)

1 Ответов

Рейтинг:
0

OriginalGriff

Не открывайте его для вывода: это специально удаляет файл, если он существует, и открывает новый: используйте OpenMode.Вместо этого добавьте.

Но... Я бы предположил, что вместо того, чтобы держать данные в плоский файл, использовать "определенный формат" файлов, таких как CSV, XML или JSON - это тривиально, чтобы поддерживать список клиентов и может сериализовать и десериализовать весь список инстанций в одну строку кода, если вы используете NewtonSoft.В формате JSON: вы можете добавить его в свой проект с помощью диспетчера пакетов NuGet (инструменты ... Менеджер Пакетов NuGet ... Консоль Диспетчера Пакетов):

PM> Install-Package Newtonsoft.Json
И тогда только одна строка кода делает всю работу:
File.WriteAllText(path, JsonConvert.SerializeObject(MyCustomers));
И
MyCustomers =  JsonConvert.DeserializeObject<List<Customer>>(File.ReadAllText(path));

Кроме того, вы получаете формат файла, который можно использовать непосредственно во многих других приложениях.