i have a problem in my java exercise. i need to print a multiply contact information to a file, but when i print more then 1 contact, only 1 contact is displayed in the file.. i tried to debug that but i cant find any mistake i will put the code of my classes here:
This is Demo Class which i run the code from
public class Demo {
public static void main(String[] args) {
    System.out.println("Insert number of Contacts:");
    Scanner scanner = new Scanner(System.in);
    int val = scanner.nextInt();
    Contact[] contacts = new Contact[val];
    for(int i = 0 ; i < val; i++) {
        System.out.println("Contact #"+(i+1));
        System.out.print("Owner: \n");
            String owner = scanner.next();
        System.out.print("Phone number: \n");
            String phoneNum = scanner.next();
        System.out.print("Please Select Group:\n"
                + "1 For FRIENDS,\n" + 
                "2 For FAMILY,\n" + 
                "3 For WORK,\n" + 
                "4 For OTHERS");
        int enumNum = scanner.nextInt();
        Group group;
        switch(enumNum) {       
        case 1:
            group=Group.FRIENDS;
            break;
        case 2:
            group=Group.FAMILY;
            break;
        case 3:
            group=Group.WORK;
            break;
        default:
            group=Group.OTHERS;     
        }//switch end
        contacts[i] = new Contact(owner,phoneNum,group);
    }//loop end
    System.out.println("Insert File name");
    String fileName = scanner.next();
    File f=null;
    for(int i = 0 ; i < val; i++) {
        if(i==0) {
            f = new File(fileName);
            contacts[0].Save(fileName);
        }
        else {
            contacts[i].Save(f);        
        }
    }
}
}
This is Contact Class:
enum Group {
FRIENDS,
FAMILY,
WORK,
OTHERS
}; public class Contact {
private String phoneNumber,owner;
private Group group;
PrintWriter pw = null;
  public Contact(String owner ,String phoneNumber,Group group) {
      setPhoneNumber(phoneNumber);
      setOwner(owner);
      setGroup(group);
  }
  public Contact(String fileName) {
      File file = new File(fileName+".txt");
      try {
        Scanner scanner = new Scanner(file);
         phoneNumber=scanner.nextLine();
         owner=scanner.nextLine();
         String str=scanner.nextLine();
         group = Group.valueOf(str);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
      catch(Exception e) {
          e.printStackTrace();
      }
  }
  public Contact(File file) {
      try {
        Scanner scanner = new Scanner(file);
         phoneNumber=scanner.nextLine();
         owner=scanner.nextLine();
         String str=scanner.nextLine();
         group = Group.valueOf(str);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
      catch(Exception e) {
          e.printStackTrace();
      }
  }
public String getPhoneNumber() {
    return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
}
public String getOwner() {
    return owner;
}
public void setOwner(String owner) {
    this.owner = owner;
}
public Group getGroup() {
    return group;
}
public void setGroup(Group group) {
    this.group = group;
}   
public void Save(String fileName) {
    File f = new File(fileName+".txt");
    try {
        if(f.createNewFile()) {
            System.out.println("File created");
            pw = new PrintWriter(f); //יצירת מדפסת לקובץ    
            pw.println(phoneNumber+"\n"+owner+"\n"+group+"\n\n\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    pw.close();
}
public void Save(File f) {
    PrintWriter pw=null;
    try {
        pw = new PrintWriter(f);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    pw.println(phoneNumber+"\n"+owner+"\n"+group);
    pw.close();
}   
public String toString() {
    return phoneNumber+"\n"+owner+"\n"+group;
}
}
 
     
    