Ogólnie chciał bym się zapytać czy nie wygląda to bardzo tragicznie
Jest źle
public class Employee{
String Name;
int Salary;
ArrayList<String> Skills = new ArrayList<String>();
public Employee(String Employee_name, int salary, ArrayList<String> skills) throws FileNotFoundException, UnsupportedEncodingException {
Name = Employee_name;
Salary = salary;
Skills = skills;
SaveToFile(Employee_name);
}
private void SaveToFile(String Employee_name) throws FileNotFoundException, UnsupportedEncodingException{
File file = new File ("C:/Users/Home/Desktop/eclipse/workspace/Test/employees/" + Employee_name);
PrintWriter writer = new PrintWriter(file, "UTF-8");
writer.println(Employee_name);
writer.println(Salary);
writer.println(String.join(", ", Skills));
writer.close();
}
}
ArrayList<String> Skills = new ArrayList<String>();
- Dlaczego zwykłe POJO (w założeniu rozumiem) wie GDZIE i JAK zapisać dane do pliku ? wehuwheuqihwieuhqwehqwe ?
W przypadku zapisu powinien być jakiś, EmployeeRespository - interface, i dla niego implementacja która zapiszę do pliku - każda klasa ma mieć ODPOWIEDZIALNOŚĆ.
- Dlaczego zapisujesz dane w konstruktorze ? to jest złe, wykonywanie potencjalnie długich operacji, nie rób tak.
- pola powinny być oznaczone jako final
public class main{
public static void main(String[] args) throws IOException {
Company c1 = new Company();
// c1.add_Employee(Employee_name, Employee_salary, Employee_skills);
// c1.view_Employee(Employee_name);
// c1.view_Employees();
// c1.add_Employee(Employee_name, Employee_salary, Employee_skills);
// c1.add_Skill(Employee_name, new_Skill);
// c1.remove_Employee(Employee_name);
// c1.edit_Salary(Employee_name, new_Salary);
// c1.edit_Name(Employee_name, new_Employee_name);
}
}
super.
public void add_Employee(String Employee_name, int Employee_salary, ArrayList<String> Employee_skills) throws IOException{
if(!existence_Employee(Employee_name)){
Employee employee = new Employee(Employee_name, Employee_salary, Employee_skills);
}else{
System.out.println("We have an employee!");
}
}
a co się stanie, jak inny program, dokładnie zaraz po wykonaniu
if(!existence_Employee(Employee_name)){
a jeszcze przed
Employee employee = new Employee(Employee_name, Employee_salary, Employee_skills);
stworzy ten plik ?????????????????????????????????
Path path = Paths.get("C:/Users/Home/Desktop/eclipse/workspace/Test/employees/"+Employee_name);
String lineskill = Files.readAllLines(Paths.get("C:/Users/Home/Desktop/eclipse/workspace/Test/employees/"+Employee_name)).get(2);
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
Wyobraź sobie plik który ma 2GB ? Ja wiem że operacje na streamach są "skomplikowane", ale wszystko do pamięci ?