chciałbym aby program sprawdzał czy plik jest pusty
Po prostu sprawdź jego długość:
bool IsEmpty(this FileInfo fi)
{
return fi.Length == 0;
}
jest nie istnieje to go tworzył
if (!File.Exists(path))
{
try
{
File.Create(path).Dispose();
}
catch (IOException ex)
{
// wypisanie komunikatu
}
}
zapisywał w pierwszej linijce Name - Point - Level, tylko za pierwszym razem
Dlaczego tylko za pierwszym razem? Przy zmianie zapisu statystyk najłatwiej i najszybciej będzie je po prostu nadpisać. Zainteresuj się jakimś formatem wymiany danych, np. JSON. .NET Core ma już wbudowaną obsługę do tego formatu.
Chciałbym również alby te kolumny Name, Point, Level miały równe niezmienne odległości, w przypadku jeśli ktoś miałby krótszą albo dłuższa nazwę np.,
Tutaj chyba dopiero zaczynam rozumieć, że chodzi Ci o wyświetlanie tabeli tekstowo na podstawie niezmienionych danych z pliku (aplikacja konsolowa?).
Wspominając powyżej format wymiany danych, zarządzając statystykami nie powinieneś się tym martwić, tylko stworzyć model przeznaczony do (de)serializacji danych formatu JSON. Możesz dzięki temu przeciążyć metodę ToString() dla Twojej klasy:
public override string ToString()
{
return $"{Name} - {Point} - {Level}";
}
Ale co odpowiedź na Stackoverflow w tym temacie, to inne rozwiązanie i trochę kombinowania. Możesz zainstalować pakiet np. ConsoleTables. Kod quickstart fajnie wygląda.
W następnym etapie chciałbym również dodać do tego projektu, aby wyniki były wyświetlane od największej liczby punktów.
LINQ powinien tutaj wkroczyć do akcji. :)
enum SortingOrder
{
Ascending,
Descending
}
public void SortStats(this List<TwojaKlasa> stats, SortingOrder st = SortingType.Descending)
{
if (st == SortingOrder.Ascending)
{
return stats.OrderBy(obj => obj.Point).ToList();
}
else
{
return stats.OrderByDescending(obj => obj.Point).ToList();
}
}