//Button som lägger till ny bok private void ButtonAddNewBook_Click(object sender, EventArgs e) { outputBox.Text = Bibliotekarie.SkapaBok( userInputBoxTitel.Text, userInputBoxSkribent.Text, Convert.ToInt32(userInputBoxUtgivningsår.Value), userInputBoxTyp.Text, true); }
//Metod som öppnar och läser en textfil till boklistan public static void OpenFile(string filePath) { //Skapar en lista som håller i strängvektorer List <string[]> booksToImport = new List <string[]>(); //Försök att öppna och läsa filen try { //Skapar en ny lista som håller i vanliga strängar List <string> itemSaver = new List <string>(); //Skapar en ny FileStream som öppnar filen och en StreamReader som läser av vad som matas in i FileStreamen FileStream inStröm = new FileStream(filePath, FileMode.Open, FileAccess.Read); using (StreamReader läsare = new StreamReader(inStröm, Encoding.Default)) { string filText = ""; //Sålänge vad StreamReader skriver till variabeln "filText" inte //är lika med null så läggs strängen till i stränglistan itemSaver. //Returnerar variabeln null innebär det att vi nått slutet av listan. //Loopen bryts och StreamWritern går till garbage collection. while ((filText = läsare.ReadLine()) != null) { itemSaver.Add(filText); } } //För varje sträng i listan "itemSaver" skapas en ny strängvektor som sedan //läggs till i strängvektorlistan "booksToImport". Splitmetoden bestämmer var strängarna ska kapas //för att sedan lagras separat. foreach (string a in itemSaver) { string[] vektor = a.Split(new string[] { "###" }, StringSplitOptions.None); booksToImport.Add(vektor); } //För varje strängvektor i listan; skapa ett Bok-objekt. //Varje index i strängvektorn innehåller information om en enskild egenskap. foreach (string[] item in booksToImport) { string titel = item[0]; string skribent = item[1]; string typ = item[2]; bool tillänglig = true; int utgivningsår = 0; //Mina Bok-objekt kräver ett utgivningsår och jag fick inte modifiera textfilen if (item[3] != "true") { tillänglig = false; } Bibliotekarie.SkapaBok(titel, skribent, utgivningsår, typ, tillänglig); } } //Det enda som kan krascha öppningen och läsningen av filen är att filen är i fel format på något sätt. //Därför räcker det med att alla Exceptions får samma meddelande här catch (Exception) { MessageBox.Show( "Ogiltigt filformat...\n\nFilen måste ha filändelsen \".txt\" och vara formaterad på följande sätt:\n\n" + "string###string###string###bool\n" + "Titel###Författare###Typ###tillänglighet\n" + "Pippi Långstrump###Astrid Lindgren###Roman###true", "Whoops!", MessageBoxButtons.OK); } }