Я пытаюсь восстановить некоторые файлы данных (в основном PDF-файлы) из базы SQL Server.
Столбец таблицы имеет следующий тип: D_BLOB (изображение) и содержит данные этого типа:
Что касается кода и различных подходов, которые я пробовал, здесь мои различные части кода объединены
byte[] output = qResult.getBytes("DOCUMENT");
Blob blob = qResult.getBlob("DOCUMENT");
String document2 = qResult.getString("DOCUMENT");
InputStream input = qResult.getBinaryStream("DOCUMENT");
FileOutputStream output2 = new FileOutputStream(new File(repertoireDst + "\\" + intitule + "_test2_." + extension));
byte[] buffer = new byte[1024];
while (input.read(buffer) > 0) {
output2.write(buffer);
}
output2.close();
/************************************
* Simple input output Stream
*******************/
InputStream inputStream = blob.getBinaryStream();
OutputStream outputStream = new FileOutputStream(repertoireDst + "\\" + intitule + "_test_." + extension);
int bytesRead = -1;
byte[] buffer2 = new byte[1024];
while ((bytesRead = inputStream.read(buffer2)) != -1) {
outputStream.write(buffer2, 0, bytesRead);
}
inputStream.close();
outputStream.close();
/************************************
* Simple byte writing
*******************/
FileOutputStream fos = null;
fos = new FileOutputStream(new File(repertoireDst + "\\" + intitule + "_V1_EcritureBytesSymple." + extension));
fos.write(output);
fos.flush();
fos.close();
/*************************************************
* Ecriture of bynary stream from blob
***********************************************/
InputStream is = blob.getBinaryStream();
FileOutputStream fos1 = new FileOutputStream(repertoireDst + "\\" + intitule + "_V2_BlobEcritDirectement.txt");
int b = 0;
while ((b = is.read()) != -1) {
fos1.write(b);
}
fos1.flush();
fos1.close();
/**************************************************************************
* Testing for base 64 encoding
************************************************************************/
File fichierDestinationTemp = new File(repertoireDst + "\\" + intitule + "_V3_FichierTxtTemp.txt");
File fichierDestinationTemp2 = new File(repertoireDst + "\\" + intitule + "_V4_FichierEncoderDecoder.txt");
File fichierDestinationTemp3 = new File(repertoireDst + "\\" + intitule + "_V5_FichierEncoder." + extension);
Файл fichierDestination = новый файл (repertoireDst + "\" + intitule + "." + Расширение);
PrintWriter writer = new PrintWriter(fichierDestinationTemp, "Cp1252");
writer.print(document2);
writer.close();
byte[] encodedBytes = Base64.getEncoder().encode(output);
String encodedString = new String(encodedBytes);
FileOutputStream fos2 = new FileOutputStream(fichierDestinationTemp3);
fos2.write(encodedString.getBytes());
fos2.flush();
fos2.close();
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
FileOutputStream fos3 = new FileOutputStream(fichierDestinationTemp2);
fos3.write(decodedBytes);
fos3.flush();
fos3.close();
Конечно, это создает все мои файлы, но ни один из файлов pdf не читается. Я думаю, я что-то пропустил. (И да, я знаю, что некоторые части я записываю в файлы .txt, но это было для того, чтобы увидеть, что я получу, и эй, некоторые из них, где даже в китайском ...)
Любая идея приветствуется, интересно, чего мне не хватает.