#c#
#c#
Вопрос:
Я новичок в C # и работаю над забавной, возможно, полезной программой для моего образования. У меня есть данные, которые хранятся в файлах, по одному файлу для каждой записи в приведенном ниже формате. Я полагаю, что они также расположены в определенном порядке в файле. Для каждого файла существует около 100 значений. Моя программа в основном изменит несколько из этих значений и запишет их обратно в файл.
Я пытаюсь выяснить, как я должен хранить эти значения. Я знаю, как читать текстовый файл. Я думал о чтении каждой строки и сохранении ее в массиве. У кого-нибудь есть другие предложения? Будет ли это хорошим вариантом использования для класса?
D:"value1"=00000800
D:"value2"=00000001
S:"value3"=full
Комментарии:
1. Добро пожаловать, заретустра! Возможно ли показать нам какой-нибудь код того, что вы сделали? Нам было бы проще, если бы мы просто модифицировали ваш код, а не писали для вас совершенно новый.
2. На самом деле я еще не написал никакого кода. Я все еще был на этапе проектирования. Я могу опубликовать повторно, как только сделаю это. Похоже, я, возможно, поторопился.
3. Ответ во многом будет зависеть от того, как вы собираетесь обрабатывать каждый файл (или объединение всех файлов). Если вы просто ищете значение в одном или нескольких файлах, нет необходимости использовать массивы.
Ответ №1:
Рад, что вы освоили C #. Я надеюсь, что вы найдете это полезным.
Один из методов, который я предпочитаю, когда хочу изменить файл на C #, — это сначала, File.ReadAllLines
а затем Files.WriteAllLines
. Для этих двух статических методов вам понадобится using System.IO
.
Для разбора текстов вам может понадобиться String.Split
.
Вот пример:
using System;
using System.IO;
class Test
{
public static void Main()
{
var filepath = @"myfile.txt";
// Read all lines.
var allLines = File.ReadAllLines(filepath);
// Modify your text here.
foreach (var line in allLines)
{
// Parse the line and separate its components with delimiters ':', '"' and '='.
var components = line.Split(new char[]{':', '"', '=',});
// Change all X:"value_i"=Y to X:"value_i"=5.
components[2] = "5";
}
// Write all lines.
File.WriteAllLines(filepath, allLines);
}
}
Комментарии:
1. Было бы неплохо упомянуть, что вы решили, что разделителями должны быть «:», «=» и кавычки, поскольку в OP это не указано.