Как прочитать и отсортировать текстовый файл

#c#

#c#

Вопрос:

Как мне прочитать и отсортировать текстовый файл

извините, если это простой вопрос, я новичок в программировании. Я перепробовал много онлайн-решений, но ни одно, похоже, не решает мою проблему:

 namespace Login_but_it_hopefully_works
{
    public partial class Leaderboard : Form
    {
        string Line = "";
        private string filepath1 = @"Compdetails.txt";
        FileStream readerStream = new FileStream("Compdetails.txt", FileMode.Open);
        string[] content = null;
        public Leaderboard()
        {
            InitializeComponent();
        }

        public object ListReadFile { get; private set; }

        private void bttn_load_Click(object sender, EventArgs e)
        {
            string[] content = null;
            //Read the content
            using (StreamReader CompTXT = File.OpenText(filepath1))
            {
                content = CompTXT.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

                //Remove the entries in the file
                readerStream.SetLength(0);
            }

            FileStream writerStream = new FileStream(@"DesktopSourcetext.txt", FileMode.OpenOrCreate);
            using (StreamWriter writer = new StreamWriter(writerStream))
            {
                //Sort the content and write back to the same file
                Array.Sort(content);
                writer.Write(string.Join(Environment.NewLine, content));
            }
        }
    }
}
  

Ошибка заключается:

Дополнительная информация: Процесс не может получить доступ к файлу ‘E:CSLoginLogin но это, надеюсь worksbinDebugCompdetails.txt ‘ потому что он используется другим процессом, а строка » using (StreamReader CompTXT = File.OpenText(filepath3))»

Комментарии:

1. Можете ли вы подтвердить, что на самом деле файл не открыт в другом редакторе? Строка ошибки ссылается на filepath3. Вы имели в виду, что это должен быть filepath1? Также в опубликованном вами сообщении об ошибке есть несколько лишних слов, которые вы, возможно, захотите удалить.

2. Не могли бы вы объяснить, что такое text.txt и Compdetails.txt для чего предназначены эти два файла и что вы хотите сделать с ними?

3. var lines = File.ReadAllLines("yourTextFile"); File.WriteAllLines("someTextFile", lines.OrderBy(x => x));

Ответ №1:

Удалите 2 строки, включающие readerStream . Они не выполняют того, что вы думаете, но они вызывают эту ошибку. 🙂 Вашей следующей задачей будет перезаписать файл, а не добавлять к нему.

Чтобы уточнить причину ошибки: объявление этого поля в классе и инициализация путем открытия потока приводит к блокировке файла на все время существования экземпляра класса. Когда вы затем вызываете метод события button и пытаетесь открыть другой поток с другой блокировкой для того же файла, возникает исключение.