#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 и пытаетесь открыть другой поток с другой блокировкой для того же файла, возникает исключение.