Reputation: 1
How do i read and sort a text file
sorry if this is an easy question I'm new to coding. I've tried many online solution but none seems to fix my problem:
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(@"Desktop\Source\text.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));
}
}
}
}
The error is:
Additional information: The process cannot access the file 'E:\CS\Login\Login but it hopefully works\bin\Debug\Compdetails.txt' because it is being used by another process and the line is " using (StreamReader CompTXT = File.OpenText(filepath3))"
Upvotes: 0
Views: 63
Reputation: 4761
Remove the 2 lines involving readerStream
. They are not accomplishing what do you think they are, but they are causing that error. :-) Your next task will be to overwrite the file rather than append to it.
To elaborate on the cause of the error: having that field declared in the class and initialized by opening a stream causes the file to be locked for as long as an instance of the class exists. When you then call the button event method and try to open another stream with another lock on the same file, an exception results.
Upvotes: 1