Há necessidade de transferir documentos originalmente armazenados no banco de dados para o sistema de arquivos, então escrevi um programa simples para completar esta função.
Código Java
Copie o código do código da seguinte forma:
importar java.io.BufferedOutputStream;
importar java.io.File;
importar java.io.FileOutputStream;
importar java.io.IOException;
importar java.sql.Connection;
importar java.sql.DriverManager;
importar java.sql.PreparedStatement;
importar java.sql.ResultSet;
importar org.dbunit.util.Base64;
classe pública ReadBlob {
/**
* @param argumentos
*/
public static void main(String[] args) lança exceção {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Conexão de conexão = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=test1", "sa",
"123456");
PreparedStatement ps = conn.prepareStatement("selecione * de aa");
ResultSet rs = ps.executeQuery();
enquanto(rs.next()){
String nomeArquivo = rs.getString("NomeArquivo");
String conteúdo = rs.getString("Conteúdo");
byte[] byte_content = Base64.decode(conteúdo);
gerarArquivo(byte_content, "D://doc", nomeArquivo);
}
conn.close();
}
/**
* Gere arquivos com base na matriz de bytes
*/
public static void generateFile(byte[] bfile, String filePath,String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
Arquivo arquivo = null;
tentar {
Dir do arquivo = novo arquivo(filePath);
if(!dir.exists()&&dir.isDirectory()){
dir.mkdirs();
}
arquivo = new Arquivo(caminhodoarquivo+"//"+nomedoarquivo);
fos = novo FileOutputStream(arquivo);
bos = novo BufferedOutputStream(fos);
bos.write(bfile);
} catch (Exceção e) {
e.printStackTrace();
} finalmente {
if (bos! = nulo) {
tentar {
bos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (fos! = nulo) {
tentar {
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}