Guardar/leer archivo en una columna LONGBLOB

Hola experto:
Mi consulta es la siguiente: Que tamaño de buffer debo utilizar para leer un archivo desde la base de datos??
Esto es parte del codigo que estoy utilizando:
// Escribir archivo en la BD Mysql
...
PreparedStatement ps = conn.prepareStatement("insert into anlagen values('"+sendername.toString()+"','"+filename.toString() + "',?)");
File fileIn = new File("C:\\diso_temp\\" + filename);
int fileLength = (int) fileIn.length();
InputStream streamedFile = new FileInputStream(fileIn);
ps.setBinaryStream(1, streamedFile, fileLength);
ps.executeUpdate();
ps.close();
streamedFile.close();
...
// Leer archivo de la BD (reading/loading)
...
ResultSet rs = conn.createStatement().executeQuery("SELECT file,filename FROM anlagen");
while (rs.next()) {
    Blob blob = rs.getBlob("file");
    String filename = rs.getString("filename");
                  OutputStream fwriter = new FileOutputStream("C:\\"+filename);
    readFromBlob(blob, fwriter);
    fwriter.close();
}
...
public static long readFromBlob(Blob blob, OutputStream out)
            throws SQLException, IOException {
    InputStream in = blob.getBinaryStream();
    int length = -1;
    long read = 0;
    byte[] buf = new byte[bBufLen];
    while ((length = in.read(buf)) != -1) {
        out.write(buf, 0, length);
        read += length;
    }
    in.close();
    return read;
}
Mi problema está  en esta linea: byte[] buf = new byte[bBufLen]; , ya que no se que valor colocar en vez de la variable bBufLen.
De antemano, gracias por su ayuda

1 respuesta

Respuesta
1
Deberias tratar con este codigo. Transforma el InputStream a un file y luego a ese file temporal le sacas el lenght.
InputStream r=new FileInputStream("test.txt");
File f = new File("test.txt");
InputStream r=new FileInputStream(f);
long length = f.length();

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas