Es necesario transferir los documentos originalmente almacenados en la base de datos al sistema de archivos, por lo que escribí un programa simple para completar esta función. El código es el siguiente:
código java
Copie el código de código de la siguiente manera:
importar java.io.BufferedOutputStream;
importar java.io.File;
importar java.io.FileOutputStream;
importar java.io.IOException;
importar java.sql.Conexión;
importar java.sql.DriverManager;
importar java.sql.PreparedStatement;
importar java.sql.ResultSet;
importar org.dbunit.util.Base64;
clase pública ReadBlob {
/**
* argumentos @param
*/
public static void main (String [] args) lanza una excepción {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Conexión de conexión = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=test1", "sa",
"123456");
PreparedStatement ps = conn.prepareStatement("seleccione * de aa");
Conjunto de resultados rs = ps.executeQuery();
mientras(rs.siguiente()){
String fileName = rs.getString("FileName");
Contenido de cadena = rs.getString("Contenido");
byte[] byte_content = Base64.decode(contenido);
generarArchivo(byte_content, "D://doc", nombredearchivo);
}
conexión.close();
}
/**
* Generar archivos basados en una matriz de bytes
*/
public static void generateFile(byte[] bfile, String filePath,String fileName) {
BufferedOutputStream bos = nulo;
FileOutputStream fos = nulo;
Archivo archivo = nulo;
intentar {
Directorio de archivo = nuevo archivo (filePath);
if(!dir.exists()&&dir.isDirectorio()){
dir.mkdirs();
}
archivo = nuevo Archivo(filePath+"//"+fileName);
fos = nuevo FileOutputStream(archivo);
bos = nuevo BufferedOutputStream(fos);
bos.write(archivob);
} captura (Excepción e) {
e.printStackTrace();
} finalmente {
si (bos != nulo) {
intentar {
bos.cerrar();
} captura (IOException e1) {
e1.printStackTrace();
}
}
si (fos != nulo) {
intentar {
fos.cerrar();
} captura (IOException e1) {
e1.printStackTrace();
}
}
}
}
}