Итак, моя проблема в том, что я пытаюсь читать и писать из файла CSV, но у меня возникает проблема с добавлением новой строки и последующим чтением без получения следующей ошибки:
Теперь я думаю, что знаю, почему я получаю ошибку, но я могу найти способ ее исправить. Я пишу в файл со следующим кодом:
public void writeToFile(AbstractAccount account)
{
StringBuilder sb = new StringBuilder();
sb.append(account.getFirstname() + ",");
sb.append(account.getLastname() + ",");
sb.append(account.getID() + ",");
sb.append(account.getPhonenum() + ",");
sb.append(account.getUsername() + ",");
sb.append(account.getPassword() + ",");
sb.append(account.getAccounttype());
FileWriter fw = null;
try
{
fw = new FileWriter("login.csv", true);
fw.append(System.lineSeparator() + sb.toString());
fw.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
Проблема в том, что внутри CSV-файла выглядит так:
John,Doe,A1,0123456789,johnd,password1,Admin
Jane,Doe,A2,1234567890,janed,password2,CourseCoordinator
John,Smith,A3,2345678901,johns,password3,Approver
Jane,Smith,A4,356789012,johns,password4,CasualStaff
Test, Test, Test, Test, test, test, Admin
Но когда я копирую его где-то, как в текстовый редактор переполнения стека, я вижу, что фактический формат таков:
John,Doe,A1,0123456789,johnd,password1,Admin
Jane,Doe,A2,1234567890,janed,password2,CourseCoordinator
John,Smith,A3,2345678901,johns,password3,Approver
Jane,Smith,A4,356789012,johns,password4,CasualStaff
Test, Test, Test, Test, test, test, Admin
Поэтому, когда я читаю из файла, используя этот код:
public ArrayList<AbstractAccount> readFromFile(String filename)
{
BufferedReader br = null;
String line = "";
try
{
br = new BufferedReader(new FileReader(filename));
while ((line = br.readLine()) != null)
{
// use comma as separator
String[] attributes = line.split(",");
accounts.add(CreateAccount(attributes));
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
return accounts;
}
Я получаю ту ошибку, о которой упоминал ранее. Я пробовал несколько способов написать новую строку, но я не могу найти тот, который не дает мне эту пустую строку. У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: код для создания учетной записи
public AbstractAccount CreateAccount(String[] data)
{
String firstname = data[0];
String lastname = data[1];
String id = data[2];
String phonenum = data[3];
String username = data[4];
String password = data[5];
String accounttype = data[6];
if (accounttype.equals("Admin"))
return new AdminModel(firstname, lastname, id, phonenum, username, password);
else if (accounttype.equals("CourseCoordinator"))
return new CourseCoordinatorModel(firstname, lastname, id, phonenum, username, password);
else if (accounttype.equals("Approver"))
return new ApproverModel(firstname, lastname, id, phonenum, username, password);
else if (accounttype.equals("CasualStaff"))
return new CasualStaffModel(firstname, lastname, id, phonenum, username, password);
else
return null;
}