Я работаю над проектом, в котором пользователь может просматривать фразы предложений и выбирать конкретное значение конкретного слова в предложении (лучший способ его описать).Часть того, что мне нужно сделать, это сохранить индекс текущего выбранного предложения, чтобы при повторном открытии программы пользователь мог вернуться с того места, где он остановился.Это было легко.
Однако у меня возникла проблема при попытке перезаписать первую строку файла, который сохраняет свою работу (он содержит индекс последнего просмотренного предложения), а именно, что он удаляет следующую строку (частично или иначе).Лучшее (то есть единственное) решение, которое я нашел до сих пор, - переписать весь файл, но я все еще хотел бы знать, что происходит под капотом.
По сути, сначала я написал следующее в текстовый файл:
Andrew
ate
breakfast
Затем я переписал первую строку с помощью Andrew 122 с помощью WriteLine и получил следующее:
Andrew 122
breakfast
Используя Write, я получил это:
Andrew 122e
breakfast
Есть ли кто-нибудь, кто может объяснить мне, что происходит?
(для справки, вот код, который я использовал дляпроверить это:
static void Main(string[] args)
{
string path = String.Format(@"C:\Users\User\Desktop\{0} Project\test.txt", @"C#");
if (File.Exists(path))
File.Delete(path);
WriteToFile(path, true, "Andrew", "ate", "breakfast");
WriteToFile(path, false, "Andrew 122");
}
public static void WriteToFile(string path, bool newLine, params string[] line)
{
using (FileStream fStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
using (StreamWriter fWriter = new StreamWriter(fStream, Encoding.UTF8))
for (int i = 0; i < line.Length; i++)
if (newLine)
fWriter.WriteLine(line[i]);
else
fWriter.Write(line[i]);
}