Java - Escribir archivos

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 46 puestos en Java (en relación al último mes)
Gráfica de Java

Escribir archivos

Publicado por Roman (4 intervenciones) el 27/04/2018 19:33:15
Hola buenas tardes,

Escribo para solicitar ayuda para escribir un archivo y guardarlo en mi equipo, puedo adjuntar archivos a mi base de datos, imagenes, zip, txt, pero al momento de descargarlos me crea el archivo correctamente pero en blanco, es decir, si adjunto a un cliente un txt, se adjunta correctamente, pero al momento de descargarlo me genera el archivo correctamente pero en blanco, espero me puedan ayudar, este es mi codigo:

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
public void descargaArchivo() throws FileNotFoundException, IOException
{
    String SQLselect="{call getDocumento(?)}";
 
    InputStream input = null;
    ResultSet rs = null;
    FileOutputStream fos=null;
 
    try
    {
        File ruta=new File("C:\\Users\\jraraujo\\Desktop\\Documento _001.txt");
        fos = new FileOutputStream(ruta);
        System.out.println(ruta);
 
        sp=cn.prepareCall(SQLselect);
        cn.setAutoCommit(false);
        fos = new FileOutputStream("Documentos_001.txt");
 
        sp.setString(1, Proveedores.txtddocumento.getText());
        sp.execute();
        cn.commit();
        System.out.println("Estamos extrayendo el archivo, por favor sea paciente...");
        rs=sp.getResultSet();
        while(rs.next())
        {
            System.out.println(rs.getString(1));
            Blob archivo=rs.getBlob(1);
            input=archivo.getBinaryStream();
            System.out.println(input.read());
            int size=(int)archivo.length();
            byte[] buffer=new byte[size];
            int r=-1;
            while((r=input.read(buffer))!=-1)
            {
                fos.write(buffer,0,r);
                System.out.println(input.read());
            }
        }
        System.out.println("Descarga Completa");
        JOptionPane.showMessageDialog(null, "Descarga Completa", "Sistema", JOptionPane.INFORMATION_MESSAGE);
    }
    catch(SQLException ex)
    {
        JOptionPane.showMessageDialog(null, "ERROR: "+ex, "Sistema", JOptionPane.ERROR_MESSAGE);
        System.err.println(ex.getMessage());
    }
   if(rs != null)
   {
        try
        {
            input.close();
            fos.flush();
            fos.close();
            sp.close();
            cn.close();
        }
        catch (SQLException e)
        {
            System.err.println("No se pudo cerrar la conexion!");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Escribir archivos

Publicado por Juan (58 intervenciones) el 28/04/2018 15:55:07
Para descartar posibles errores has comprobado que entre en el segundo while ...el que escribe en el archivo-> while( (r=input.read(bufferd))!=-1) ???
O hacer flus antes de cerrar el input ...
Yo utilizaba siempre FileRead BufferRead para leer y FileWrite BufferWrite
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar