У меня есть полиморфный HashSet, который я хочу написать toString() каждого объекта в этом HashSet в файл, так что он отформатирован так, как он выглядит при печати на консоль. Я могу написать все в файл, но каждый объект печатается на одной строке. Я хотел бы, чтобы каждый объект печатался так, как форматируется toString() (каждое поле напечатано в новой строке).Запись объекта toString() в файл, аккуратно отформатированный в Java
Любая помощь будет принята с благодарностью. Я попытался кучу вещей, но это то, что я в настоящее время для моего метода:
public void employeeWriter(String fileName, HashSet<Employee> employees)
{
try
{
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(fileName, false)));
for (Employee e : employees)
{
pw.println(e);
}
pw.close();
}
catch (IOException e)
{
System.err.println("Error writing to file in employeeWriter()");
e.printStackTrace();
}
}
Вот Сотрудник ToString() - Каждый ребенок Employee имеет свой собственный метод ToString() метод, который печатает этот ToString () плюс свои собственные уникальные поля.
@Override
public String toString()
{
String output = "\n\t--Employee--" + "\nName:" + "\t\t" + getName()
+ "\nTitle:" + "\t\t" + this.getClass().getSimpleName()
+ "\nID: " + "\t\t" + getId() + "\nHire Year:" + "\t\t"
+ getHireYear() + "\nTax Rate:" + "\t\t"
+ percentFormatter.format(getTaxRate()) + "\nPay Before Taxes:"
+ "\t" + formatter.format(getWeeklySalaryBeforeTaxes())
+ "\nPay After Taxes:" + "\t"
+ formatter.format(getWeeklySalaryAfterTaxes())
+ "\nWeekly Taxes:" + "\t\t"
+ formatter.format(getWeeklyTaxes());
return output;
}
У вас есть дополнительный семколон внутри цикла for в блоке try. typo, я верю? – ha9u63ar
Можете ли вы показать нам реализацию метода 'toString()', пожалуйста? – Dev
hagubear - да, это была опечатка. – user2827811