C # Сохранение "X" раз в один файл .txt без перезаписи последней строки - PullRequest
0 голосов
/ 06 декабря 2010

Ну, теперь у меня новая проблема.Я пишу код в C #

Я хочу сохранить из textBoxName в файл group.txt каждый раз, когда я вводю строку в текстовое поле и нажимаю кнопку Сохранить.Следует сохранить в этом порядке (если это возможно, чтобы отсортировать его как AZ, было бы здорово):

1. Petar Milutinovic<br> 2. Ljiljana Milutinovic<br> 3. Stefan Milutinovic<br> 4. ... etc

Я не могу заставить его работать, я пытался использовать технику из моегопервый вопрос, и пока нет решения: (

Это легко, я думаю, но я все еще новичок, и мне это нужно ужасно ...

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

Вот простая маленькая процедура, которую вы можете использовать для чтения, сортировки и записи файла. Есть множество способов, которыми это можно сделать, мой, вероятно, даже не самый лучший. Даже сейчас я думаю "Я мог бы написать это, используя FileStream, и затем выполнить итерацию для подсчета" , но это микрооптимизация, которую можно выполнить позже, если у вас возникнут проблемы с производительностью мультимегабайтные файлы.

    public static void AddUserToGroup(string userName)
    {
        // Read the users from the file
        List<string> users = File.ReadAllLines("group.txt").ToList();
        // Strip out the index number
        users = users.Select(u => u.Substring(u.IndexOf(". ") + 2)).ToList();
        users.Add(userName); // Add the new user
        users.Sort((x,y) => x.CompareTo(y)); // Sort
        // Reallocate the number
        for (int i = 0; i < users.Count; i++)
        {
            users[i] = (i + 1).ToString() + ". " + users[i];
        }
        // Write to the file again
        File.WriteAllLines("group.txt", users);
    }
1 голос
/ 06 декабря 2010

Попробуйте решить это с нисходящего подхода. Запишите, что должно произойти, потому что это не очевидно из вашего вопроса.

Пример:

  1. Пользователь вводит значение в (однострочное?) Текстовое поле
  2. Пользователь нажимает Сохранить
  3. Одна новая строка добавляется в конец файла с содержимым текстового поля в шаге 1

Примечание: каждой строке предшествует номер строки в форме «X. Sample», где X - номер строки, а Sample - текст из текстового поля.

Является ли приведенное выше точным?

(Если вы просто хотите добавить строку в текстовый файл, см. http://msdn.microsoft.com/en-us/library/ms143356.aspx - File.AppendAllText(filename, myTextBox.Text + Environment.NewLine); может быть тем, что вам нужно)

0 голосов
/ 06 декабря 2010

Если вам нужно, чтобы файл сортировался при каждом добавлении новой строки, вам придется либо загрузить файл в список, добавить строку и отсортировать его, либо использовать какой-либо вид поиска (я бы рекомендовать бинарный поиск), чтобы определить, где находится новая строка, и вставить ее соответствующим образом. Второй подход не имеет многих преимуществ, так как вам нужно переписать весь файл, чтобы вставить строку - он экономит ваше время только в лучшем случае, который происходит, когда вставляемая строка попадает на конец файла. Кроме того, второй метод немного облегчает работу процессора, поскольку вы не пытаетесь отсортировать каждую строку - однако для небольших файлов разница будет незаметной.

...