Загрузите данные BLOB-объектов в zip-файл в простой Java-программе - PullRequest
0 голосов
/ 30 октября 2019

Я не могу загрузить файлы, используя приведенный ниже код, поскольку у меня есть несколько типов расширений для загрузки, и я хочу заархивировать все файлы и загрузить. Если я запускаю приведенный ниже код, он говорит, что файлы повреждены. кто-нибудь, пожалуйста, помогите по этому поводу?

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcReadFile {
    private static final int BUFFER_SIZE = 4096;

    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@xxx:xxxx:xxx";
        String user = "xxx";
        String password = "xxx";

        String filePath = "C:/abc.vsd";

        try {
            Connection conn = DriverManager.getConnection(url, user, password);

            String sql = "SELECT DOC_BO FROM table fetch first 10 rows only";
            PreparedStatement statement = conn.prepareStatement(sql);

            ResultSet result = statement.executeQuery();
            if (result.next()) {
                Blob blob = result.getBlob("DOC_BO");
                InputStream inputStream = blob.getBinaryStream();
                OutputStream outputStream = new FileOutputStream(filePath);

                int bytesRead = -1;
                byte[] buffer = new byte[BUFFER_SIZE];
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, bytesRead);
                }

                inputStream.close();
                outputStream.close();
                System.out.println("File saved");
            }
            conn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
...