Здравствуйте. Есть класс, который создает объекты книг, с полями: авторы (массив), название, издательство, год издания, дата выдачи книги на руки, срок возврата. Сделал загрузку в файл всех этих данных, код приведу ниже. Вопрос заключается в том, как организовать вывод этой информации хотя бы по названию, далее усовершенствую. Лучше искать строку в файле и потом следующие 5 строк выводить, или весь файл перекинуть в массив объектов и уже там осуществлять поиск?
Вот код, который уже есть (кстати, все на форме):
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
string path = @"U:\Study\Практика по программированию\Прога\Date.txt";
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
Book book = new Book(textBox1.Text.Split(' '), textBox2.Text, textBox3.Text, Int32.Parse(textBox4.Text), dateTimePicker1.Value, dateTimePicker2.Value);
GetInfo(book);
using (FileStream fstream = new FileStream($"{path}", FileMode.Append, FileAccess.Write))
{
string Author = "";
for (int i = 0; i < book.Author_name.Length; i++)
{
Author += book.Author_name[i].ToString() + " ";
}
byte[] input = Encoding.Default.GetBytes(Author + "\n" + book.Book_name.ToString() + "\n" + book.Publishing_house.ToString() + "\n" + book.Year.ToString() + "\n" + book.Date_of_issue.ToString() + "\n" + book.Repayment_period.ToString() + "\n" + "\n");
fstream.Write(input, 0, input.Length);
}
}
public void button2_Click(object sender, EventArgs e)
{
Book book = new Book();
string text = "";
using (StreamReader fs = new StreamReader(path))
{
while (true)
{
// Читаем строку из файла во временную переменную.
string temp = fs.ReadLine();
// Если достигнут конец файла, прерываем считывание.
if (temp == null) break;
// Пишем считанную строку в итоговую переменную.
if (textBox5.Text == temp) {
}
}
}
}
public void GetInfo(Book b)
{
textBox7.Text = "";
for (int i = 0; i < b.Author_name.Length; i++)
{
textBox7.Text += b.Author_name[i].ToString() + "\r\n";
}
textBox8.Text = b.Book_name.ToString();
textBox9.Text = b.Publishing_house.ToString();
textBox10.Text = b.Year.ToString();
dateTimePicker3.Value = b.Date_of_issue;
dateTimePicker4.Value = b.Repayment_period;
}
}
public class Book
{
public string[] Author_name { get; set; }
public string Book_name { get; set; }
public string Publishing_house { get; set; }
public int Year { get; set; }
public DateTime Date_of_issue { get; set; }
public DateTime Repayment_period { get; set; }
public Book(){}
public Book(string n)
{
Book_name = n;
}
public Book(string n, int y)
{
Book_name = n;
Year = y;
}
public Book(string[] a, string n, string p, int y, DateTime d, DateTime r)
{
Author_name = a;
Book_name = n;
Publishing_house = p;
Year = y;
Date_of_issue = d;
Repayment_period = r;
}
}
}
Форма программы:
Файл, куда сохраняются данные:
Заранее спасибо)