Bonjour,

Depuis un bout de temps je cherche à extraire un fichier Document MS Word stocké dans une table sur MS Access.

j'ai utilisé POI et UcanAccess mais ça ne marche pas , j'arrive à extraire le fichier mais quand je l'ouvre on me demande de choisir l'encodage ! ce n'est pas lisible.

selectedBulletin = le bulletin sélectionné pour extraire le fichier correspondant.
getBinaryStream(6) = la 6eme colonne de la table Bulletin_d'essaie-tab contient le fichier MS World .

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
 
 
            try (Connection con = DriverManager.getConnection(BD_URL);
               Statement stmt = con.createStatement();
               ResultSet res = stmt.executeQuery("SELECT * FROM [Bulletin_d'essai-tab] "
                       + "WHERE [N° BE]='" +selectedBulletin.getNumBE() +"'");) {
                while(res.next()){
                   if(res.getBinaryStream(6)!=null){      
 
                   InputStream inputStream;
                   Blob blob= res.getBlob(6);
                   inputStream=blob.getBinaryStream();
 
 
                   String desktopDirectory = "C:\\Users\\Nirspote\\Desktop\\Tiss" ;
                   File nv_fichier = new File(desktopDirectory +"\\" +selectedBulletin.getNumBE() +".txt");
 
                   FileOutputStream fos = new FileOutputStream(nv_fichier);
 
                   int b =0;
                   while ((b = inputStream.read()) != -1)
                    {
                       /* IOUtils.copy(inputStream, fos);
                        IOUtils.closeQuietly(inputStream);
                        IOUtils.closeQuietly(fos);
                        */
                        fos.write(b);
 
                    }
                   fos.close();
j'ai essayé d'écrire via fos.Write(b) et aussi j'ai essayé via IOUtils , mais le même résultat.
j'ai aussi essayer cette méthode d'écriture mais le même résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Files.copy(
                              inputStream, 
                              nv_fichier.toPath(), 
                    java.nio.file.StandardCopyOption.REPLACE_EXISTING);
--
l'accès à la base de données Ms Access se fait via UcanAccess

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
private static final String VAR_BD_URL = "C:/Users/Nirspote/Desktop/Tiss/Base de données LHN.accdb";
private static final String BD_URL ="jdbc:ucanaccess://" +VAR_BD_URL;
Merci d'avance pour votre aide.