هناك حاجة لنقل المستندات المخزنة أصلاً في قاعدة البيانات إلى نظام الملفات، لذلك كتبت برنامجًا بسيطًا لإكمال هذه الوظيفة، والكود كما يلي:
كود جافا
انسخ رمز الكود كما يلي:
import java.io.BufferedOutputStream;
استيراد java.io.File؛
import java.io.FileOutputStream;
import java.io.IOException;
استيراد java.sql.Connection؛
استيراد java.sql.DriverManager؛
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.dbunit.util.Base64;
الطبقة العامة ReadBlob {
/**
* @param args
*/
public static void main(String[] args) يطرح الاستثناء {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
اتصال الاتصال = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=test1"، "sa"،
"123456");
PreparedStatement ps = conn.prepareStatement("select * from aa");
ResultSet rs = ps.executeQuery();
بينما(rs.next()){
String fileName = rs.getString("FileName");
محتوى السلسلة = rs.getString("المحتوى");
byte[] byte_content = Base64.decode(content);
generatorFile(byte_content, "D://doc", fileName);
}
conn.Close();
}
/**
* إنشاء الملفات على أساس مجموعة البايت
*/
public static void generatorFile(byte[] bfile, String filePath,String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
ملف الملف = فارغ؛
يحاول {
File dir = new File(filePath);
إذا (!dir.exists()&&dir.isDirectory()){
dir.mkdirs();
}
file = new File(filePath+"//"+fileName);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bfile);
} قبض (الاستثناء ه) {
printStackTrace();
} أخيراً {
إذا (بوس!= فارغة) {
يحاول {
bos.Close();
} التقاط (IOException e1) {
e1.printStackTrace();
}
}
إذا (fos ! = فارغة) {
يحاول {
fos. Close();
} التقاط (IOException e1) {
e1.printStackTrace();
}
}
}
}
}