Bonjour à tous!

Dans le cadre d'un projet personnel, je me tape la tête sur un problème
que je n'arrive pas à résoudre.

Mon but est d'insérer un .wav dans une colonne bytearea d'une table Postgresql,
et l'opération inverse, à savoir lire le BLOB et l'exporter dans un second fichier .wav...
Le problème est que la taille de mon fichier bis est quasiment le double, et j'ai beau chercher, je ne trouve pas pourquoi, j'ai la vague intuition que le problème vient de l'insertion en base...

le code de l'insertion
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
 
 statement.execute("TRUNCATE TABLE musique");
 
            //Preparation du champ data
            File fichier = new File("test.wav");
            System.out.println("Taille fichier: " + fichier.length());
            InputStream in = new FileInputStream(fichier);
 
            //Insertion dans la base
            ps = connection.prepareStatement("INSERT INTO musique (title,id_album,tracknumber,id_artist,id_genre,date,data) VALUES (?,?,?,?,?,?,?)");
            ps.setString(1, "Premier titre");   // title
            ps.setInt(2, 1);            // id_album
            ps.setInt(3, 1);            // tracknumber
            ps.setInt(4, 1);            // id_artist
            ps.setInt(5, 1);            // id_genre
            ps.setTimestamp(6, null);   // date            
            //ps.setBlob(7, in, (int) fichier.length());    //marche pas avec jdbc>3.0
            ps.setBinaryStream(7, in, (int) fichier.length());
            ps.execute();
 
            ps.close();
            in.close();
            rs.close();
            statement.close();
            connection.close();
et celui du Select et export:
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
 
            String titre = "Premier titre";
            resultset = statement.executeQuery("SELECT title, data FROM musique WHERE title = '" + titre + "' LIMIT 1");
            resultset.next();
//            System.out.println("Les lignes dans la base: ");
//            System.out.println("   TITLE = " + resultset.getString("title"));
//            System.out.println("   DATA = " + new String(resultset.getBytes("data"), 0, 32));
 
 
            InputStream in = resultset.getBinaryStream("data");
            File fichier_sortie = new File("testrecup.wav");
            OutputStream out = new FileOutputStream(fichier_sortie);
 
            //Premier essai
            byte buffer[] = new byte[512 * 1024];
            int nbLecture;
            while ((nbLecture = in.read(buffer)) != -1) {
                out.write(buffer, 0, nbLecture);
            }
            System.out.println("Taille fichier sortie: " + fichier_sortie.length());
 
            out.flush();
            out.close();
            in.close();
            resultset.close();
            statement.close();
            connection.close();
et la sortie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
run:
TEST
Titre: Premier titre
Taille fichier: 50168204
Taille fichier sortie: 100336407
BUILD SUCCESSFUL (total time: 8 seconds)

Est-ce quelqu'un voit quelque chose qui cloche?
D'avance merci