I am trying to make a C# app that reads and outputs information from a .txt file and then allows the user to enter more information to the end of that file. I am trying to write the text file in CSV form, and I am having a lot of trouble figuring out how to add to the BOTTOM of the file. It seems that when I try, it overwrites the top line of the file. Any help is appreciated. Here is the code so far, sorry for any confusing lines-- I have been trying many different things i could find online to try to get it working.
class Program
{
static void Main(string[] args)
{
string UIName = "";
string UIInvoice = "";
string UIDue = "";
string UIAmount = "";
using (FileStream fs = new FileStream(@"C:\Accounts.txt", FileMode.Open))
using (StreamReader sr = new StreamReader(fs))
{
string content = sr.ReadToEnd();
string[] lines = content.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
int lineCount = 0;
List<Account> accounts = new List<Account>();
foreach (string line in lines)
{
string[] column = line.Split(',');
if (lineCount != 0)
{
Account account = new Account();
account.AccountName = column[0];
account.InvoiceDate = column[1];
account.DueDate = column[2];
account.AmountDue = column[3];
accounts.Add(account);
}
lineCount++;
}
Console.WriteLine(content);
}
using (FileStream fs = new FileStream(@"C:\Accounts.txt", FileMode.OpenOrCreate))
using (StreamWriter sw = new StreamWriter(fs))
{
Account account = new Account();
account.AccountName = UIName;
account.InvoiceDate = UIInvoice;
account.DueDate = UIDue;
account.AmountDue = UIAmount;
//accounts.Add(account);
string fullText = (UIName + "," + UIInvoice + "," + UIDue + "," + UIAmount);
Console.WriteLine("Would you like to enter additional data?");
Console.WriteLine("Please enter the Account Name: ");
UIName = Console.ReadLine();
Console.WriteLine("Please enter the Invoice Date: ");
UIInvoice = Console.ReadLine();
Console.WriteLine("Please enter the Due Date: ");
UIDue = Console.ReadLine();
Console.WriteLine("Please enter the AmountDue: ");
UIAmount = Console.ReadLine();
File.AppendAllText("C:/Accounts.txt", fullText + Environment.NewLine);//can't get this way working, even after switching "\"s to "/"s. It says that the file is being used by another process.
Console.ReadLine();
}
}
}
}
Separate class:
public class Account
{
public string AccountName { get; set; }
public string InvoiceDate { get; set; }
public string DueDate { get; set; }
public string AmountDue { get; set; }
public static string GetAccountCSV(Account account)
{
string returnValue = account.AccountName + "," + account.InvoiceDate + "," + account.DueDate + "," + account.AmountDue;
return returnValue;
}
}
The .txt file says;
Account Name,Invoice Date,Due Date,Amount Due
Jane Doe,1/12/2017,2/12/2017,2000.00
Gonuts Inc,12/31/2017,2/28/2017,1566.50