В настоящее время я тестирую приложение, в котором хранятся контактные данные пользователя в файле. Эта информация также сохраняется в локальной компактной базе данных в качестве основного метода - сохранение их данных в этом файле является резервной копией, если эти данные будут потеряны.Неожиданные результаты с StreamReader.ReadLine()
Файл, который я использую для тестирования, содержит мои личные данные, поэтому, надеюсь, вы понимаете, что я заменил строки заполнителями! Структура этого файла выглядит следующим образом (минус первая линия):
Ниже, у меня есть некоторый код, который считывает этот файл и сохраняет в каждой строке в качестве переменной. Структура файла никогда не изменится, поэтому очень простой код:
public static bool RestoreBusinessTable(out string title, out string busName, out string mobileNumber, out string firstName, out string lastName)
{
string email = "", referral = "", contactNo, addressLine1 = "", addressLine2 = "", city = "", postcode = "", country = "", district = "";
busName = null;
mobileNumber = null;
firstName = null;
lastName = null;
title = null;
try
{
if (!File.Exists(fileName))
return false;
StreamReader sr = new StreamReader(fileName);
string work;
work = sr.ReadLine(); // Empty line
work = sr.ReadLine(); // Empty line
busName = sr.ReadLine();
title = sr.ReadLine();
firstName = sr.ReadLine();
lastName = sr.ReadLine();
email = sr.ReadLine();
referral = sr.ReadLine();
addressLine1 = sr.ReadLine();
addressLine2 = sr.ReadLine();
city = sr.ReadLine();
postcode = sr.ReadLine();
country = sr.ReadLine();
work = sr.ReadLine(); // Empty line
work = sr.ReadLine(); // Empty line
contactNo = sr.ReadLine();
district = sr.ReadLine();
mobileNumber = sr.ReadLine();
sr.Close();
// Add to database here
return true;
}
catch
{
return false;
}
}
При выполнении этого кода, я заметил, что busName
, title
, firstName
и lastName
все имели значение 07777123456
. Данные выглядели так:
07777123456
07777123456
07777123456
07777123456
[email protected]
Address Line 1
Address Line 2
City
Postcode
Country
07777123456
У меня нет асинхронных процессов или потоков, которые записываются в файл одновременно. Может ли кто-нибудь пролить свет на то, что здесь происходит, и почему первые четыре строки будут отображаться как номер мобильного телефона?
То, что вы говорите, не может произойти с помощью кода, который вы опубликовали. Как вы называете этот код и как вы печатаете переменные? Также попробуйте использовать объект передачи данных вместо бесчисленных параметров 'out'. – CodeCaster
Похоже, вы многократно переписываете 'work'. Это займет только последнее значение, которое вы назначили ему. – RichardTowers
О, извините, это не одна из ваших «выходных». – RichardTowers