J'ai 2 problèmes :
1/Je n'arrive pas à lire des données employés et manager se trouvant dans un fichier et séparées par des , et à les envoyer dans un autre fichier

voici mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/**
 * @Application de la sérialisation
 * @enregistre les objets Employee et Manager dans un même fichier travailleurs.txt
 * lit des données de type délimité(séparé par,)
 * pour ajouter ces donnees au fichier employee
 */
import java.io.*;
import java.util.*;
class ObjectFileTest3b
{  public static void main(String[] args)
   {  
 
      //File fichier=new File("Em.txt");
      try
      {  
        //Lire les données d'un fichier texte et les stocker dans un vecteur à charger dans le fichier manager.dat
 
        Employee[] staffD = new Employee[100];
         File fichier=new File("Travailleurs.txt");
         FileReader file1=new FileReader(fichier);
         BufferedReader buff1=new BufferedReader(file1);
         boolean eof=false;
         int i=0;      
  while(!eof)
         {
            String line=buff1.readLine();
            StringTokenizer st = new StringTokenizer(line,",");
 
            if (line.charAt(0)=='E')
            {                   
                String eM,nameE;
                double salaryE;
                int dayE,monthE,yearE;
 
                eM=st.nextToken();
                nameE=st.nextToken();
                salaryE=Double.parseDouble(st.nextToken());
                dayE=Integer.valueOf(st.nextToken()).intValue();
                monthE=Integer.valueOf(st.nextToken()).intValue();
                yearE=Integer.valueOf(st.nextToken()).intValue();
 
System.out.println("les employes du fichier travailleurs sont :"+nameE+","+salaryE+","+dayE+","+monthE+","+yearE);
                staffD[i]=new Employee(nameE,salaryE,dayE,monthE,yearE);
                i++;
             }
            if (line.charAt(0)=='M')
            {
 
                String eM,nameM,secretaryNameM;
                double salaryM;
                int dayM,monthM,yearM;
 
                eM=st.nextToken();
                nameM=st.nextToken();
                salaryM=Double.parseDouble(st.nextToken());
                dayM=Integer.valueOf(st.nextToken()).intValue();
                monthM=Integer.valueOf(st.nextToken()).intValue();
                yearM=Integer.valueOf(st.nextToken()).intValue();
                secretaryNameM=st.nextToken();
 
System.out.println("les managers du fichier travailleurs sont :"
+nameM+","+salaryM+","+dayM+","+monthM+","+yearM+","+secretaryNameM);
                staffD[i]=new Manager(nameM,salaryM,dayM,monthM,yearM,secretaryNameM);
                i++;
             }
         }
         //Ecriture dans un fichier.dat  
         ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.dat"));
         out.writeObject(staffD);
         out.close();
         ObjectInputStream in =  new
            ObjectInputStream(new FileInputStream("employee.dat"));
         Employee[] newStaffD = (Employee[])in.readObject();
         //in.close();
         //int i;
         for (i = 0; i < newStaffD.length; i++)
            newStaffD[i].raiseSalary(100);
         for (i = 0; i < newStaffD.length; i++)
            newStaffD[i].print();
      }
      catch(Exception e)
      {  System.out.print("Error: " + e);
         System.exit(1);
      }
   }
}
 
class Employee implements Serializable
{  private String name;
   private double salary;
   private int day,month,year;
   public Employee(String n, double s, int d,int m, int y)
   {  name = n;
      salary = s;
      day = d;
      month = m;
      year = y;
   }
   public Employee() {}
   public void print()
   {  System.out.print("\n"+name + " " + salary 
         + " " + day+"/"+month+"/"+year);
   }
   public int getYear(){
    return year;
   }
   public void raiseSalary(double byPercent)
   {  salary *= 1 + byPercent / 100;
   }  
}
 
class Manager extends Employee
{  private String secretaryName;
   public Manager(String n, double s, int d,int m,int y,String sec)
   {  super(n, s, d,m,y);
      secretaryName = sec;
   }
   public Manager() {}
   public void raiseSalary(double byPercent)
   {  // add 1/2% bonus for every year of service
      GregorianCalendar today = new GregorianCalendar();
      double bonus = 0.5 * (today.get(Calendar.YEAR) - super.getYear());
      super.raiseSalary(byPercent + bonus);
   }
   public void print(){
    super.print();
   System.out.print(" "+secretaryName);
   }
}

et voici le mesaage à l'exécution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Test employé:durant1000.0591974
Test employé:dupont900.0781969
Test manager:duval5000.0341981marie
Test manager:bailleux7000.0991969colette
Error: java.lang.NullPointerException

il lit la première partie de mon code mais il ne met rien dans employee.dat

si vous voyez où ça cloche où si vous avez 1 façon plus simple de le faire, tes commentaires sont les bienvenus

2/Je n'arrive pas à prendre ce qui se trouve dans un fichier et à le mettre dans une table d'une dase de données access, ni à faire l'inverse, prendre ce qui se trouve dans une table de bd access et le mettre dans un fichier (dieu seul sait si j'ai passé des jours et des jours , ça ne va pas)
J'enverrai mon code après la résolution du 1er problème.

Si vous aviez un programme qui fait cela, ça me rendrait bien service.

Merci d'avance