Как сортировать записи в двоичном файле на языке C# ?
Я пытаюсь отсортировать записи после записи их в текстовый файл с помощью binary writer, но программа сортирует только от 0 до 9, Когда я ставлю id=10 программа считает его 1 и ставит его после 1
это код, где я пишу, сохраняю и сортирую
Что я уже пробовал:
private void button1_Click(object sender, EventArgs e) { BinaryWriter bw = new BinaryWriter(File.Open(Class1.filename, FileMode.Open, FileAccess.Write)); int length = (int)bw.BaseStream.Length; if (length == 0) { bw.Write("ID :" + int.Parse(textBox2.Text)); textBox3.Text = textBox3.Text.PadRight(9); bw.Write("Name :" + textBox3.Text.Substring(0, 9)); length += Class1.rec_size; } else { bw.BaseStream.Seek(length, SeekOrigin.Begin); bw.Write("ID :" + int.Parse(textBox2.Text)); textBox3.Text = textBox3.Text.PadRight(9); bw.Write("Name :" + textBox3.Text.Substring(0, 9)); } textBox2.Text = textBox3.Text = ""; MessageBox.Show("Data is saved Successfully"); bw.Close(); string inFile = Class1.filename; string outFile = Class1.filename; var contents=File.ReadAllLines(inFile); Array.Sort(contents); File.WriteAllLines(outFile, contents); }
[no name]
Поскольку вы сортируете строки, это ожидаемое поведение. Если вам нужна числовая сортировка, вам нужно преобразовать строку, которую вы пытаетесь отсортировать, в число.
Member 13151067
Как я могу отсортировать его числовой сортировкой?
Afzaal Ahmad Zeeshan
Преобразуйте это число в целое число вместо строки.
Alan N
Другие дали вам хорошие идеи для сортировки числовых строк.
Что-то, что не было упомянуто, заключается в том, что BinaryWriter записывает в файл строки с префиксом длины. Такие файлы могут неправильно считываться с помощью файла.ReadAllLines и, вероятно, не будет правильно отображаться в блокноте. Чтобы создать чистый текстовый файл, вы должны использовать System.IO.StreamWriter.