Возникла необходимость перенести документы, изначально хранящиеся в базе данных, в файловую систему, поэтому я написал простую программу для выполнения этой функции. Код выглядит следующим образом:
Java-код
Скопируйте код кода следующим образом:
импортировать java.io.BufferedOutputStream;
импортировать java.io.File;
импортировать java.io.FileOutputStream;
импортировать java.io.IOException;
импортировать java.sql.Connection;
импортировать java.sql.DriverManager;
импортировать java.sql.PreparedStatement;
импортировать java.sql.ResultSet;
импортировать org.dbunit.util.Base64;
общественный класс ReadBlob {
/**
* @param аргументы
*/
public static void main(String[] args) выдает исключение {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Подключение подключения = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=test1", "sa",
«123456»);
ReadedStatement ps = conn.prepareStatement("выберите * из aa");
ResultSet rs = ps.executeQuery();
в то время как (rs.next ()) {
Строка fileName = rs.getString("FileName");
Строковое содержимое = rs.getString("Содержимое");
byte[] byte_content = Base64.decode(содержание);
генерироватьФайл(byte_content, "D://doc", имя_файла);
}
конн.закрыть();
}
/**
* Генерация файлов на основе байтового массива
*/
public static voidgenerateFile(byte[]bfile, String filePath,String fileName) {
BufferedOutputStream бос = ноль;
FileOutputStream fos = null;
Файл файл = ноль;
пытаться {
Каталог файла = новый файл (filePath);
if(!dir.exists()&&dir.isDirectory()){
дир.mkdirs();
}
файл = новый файл (filePath+"//"+fileName);
fos = новый FileOutputStream (файл);
Бос = новый BufferedOutputStream (fos);
bos.write(бфайл);
} catch (Исключение е) {
е.printStackTrace();
} окончательно {
если (бос != ноль) {
пытаться {
бос.закрыть();
} поймать (IOException e1) {
e1.printStackTrace();
}
}
если (fos != ноль) {
пытаться {
фос.закрыть();
} поймать (IOException e1) {
e1.printStackTrace();
}
}
}
}
}