-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
151 lines (121 loc) · 3.85 KB
/
Copy pathProgram.cs
File metadata and controls
151 lines (121 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System.Collections.Generic;
using System.Reflection.PortableExecutable;
string FileName = "ItemList.txt";
int input = 0;
Menu();
//Menu to select what to change or to create or to delete.
//And checking first if file exists if not it will be created.
void Menu()
{
if (!File.Exists(FileName))
{
FileStream F = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
F.Close();
}
while (input <= 5)
{
ShowList();
Console.WriteLine("----------");
Console.WriteLine("Menu");
Console.WriteLine("1. Create New item.");
Console.WriteLine("2. Show List.");
Console.WriteLine("3. Update item");
Console.WriteLine("4. Delete Item");
Console.WriteLine("6 or higher to exit");
Console.Write("Choose: ");
input = Convert.ToInt32(Console.ReadLine());
switch (input)
{
case 1: CreateItem(); break;
case 2: ShowList(); break;
case 3: UpdateItem(); break;
case 4: DeleteItem(); break;
default:
break;
}
}
}
//Reading all lines to count them and to set the correct number for the next item.
long CountLinesReader(FileInfo file)
{
var lineCounter = 0L;
using (StreamReader reader = new(file.FullName))
{
while (reader.ReadLine() != null)
{
lineCounter++;
}
return lineCounter;
}
}
//Creating an item by getting an input from the user and writing it to the file with the CountLinesReader method
void CreateItem()
{
long FileLinesCount;
using (StreamReader sr = new StreamReader(FileName))
{
FileInfo fileInfo = new FileInfo(FileName);
FileLinesCount = CountLinesReader(fileInfo);
}
using (StreamWriter sw = new StreamWriter(FileName, true))
{
Console.WriteLine("What do you want to input: ");
string NewItem = FileLinesCount++ + ". " + Console.ReadLine();
sw.WriteLine(NewItem);
}
Console.Clear();
}
//Just printing out the whole TXT file.
void ShowList()
{
string line = "";
using (StreamReader sr = new StreamReader(FileName))
{
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
//Update an item in the TXT file by reading all content finding that item to update
//and then just getting input from the user and change it in the List and write the new
//List to the FIle.
void UpdateItem()
{
Console.WriteLine("Wich line to edit just the first number: ");
string LineNumber = Console.ReadLine().TrimEnd();
Console.WriteLine("Line number is " + LineNumber);
List<string> content = File.ReadAllLines(FileName).ToList();
int index = content.FindIndex(i => i.Substring(0,1).Contains(LineNumber));
Console.WriteLine("found item: " + content[index]);
Console.Write("NewText: ");
string newItemText = Console.ReadLine();
content[index] = newItemText;
File.WriteAllLines(FileName, content);
Console.Clear();
}
//deleting an item found by the foreach loop and the given user input
void DeleteItem()
{
bool wasFound = false;
Console.WriteLine("Wich line to delete just the first number: ");
string LineNumber = Console.ReadLine().TrimEnd();
Console.WriteLine("Line number is " + LineNumber);
List<string> content = File.ReadAllLines(FileName).ToList();
foreach (var item in content.ToArray())
{
if (String.Equals(item.Substring(0, 1), LineNumber.Substring(0, 1)))
{
content.Remove(item);
wasFound = true;
continue;
}
}
File.WriteAllLines(FileName, content);
if (!wasFound)
Console.WriteLine("Nothing was deleted: Line not Found.");
else
Console.WriteLine("Line found and Deleted.");
Thread.Sleep(1000);
Console.Clear();
}