是否可以将zip文件转换为二进制文件以加载到BLOB

时间:2016-09-06 15:14:30

标签: java blob zipfile informatica

我必须使用informatica将zip文件上传到BLOB,对于此任务,我正在使用java转换。使用以下代码,我能够上传所有平面文件并以正确的格式从数据库表中检索它们。

此代码不适用于zip文件。能否请您建议我如何将zip文件转换为二进制文件,以便将其插入BLOB?

byte bytes[] = null;
File f1 = new File(TARGETFILE);
try (FileInputStream fis = new FileInputStream(f1)) {
  try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
    byte[] buffer = new byte[1024];
    int read = -1;
    while ((read = fis.read(buffer)) != -1) {
      baos.write(buffer, 0, read);
    }
    bytes = baos.toByteArray();
    FILE_CONTENT=bytes;
    FILE_SIZE=Double.toString(f1.length()/1024*1024);
  }
  catch(Exception e1) {
  }
}
catch (IOException exp) {
  exp.printStackTrace();
}

1 个答案:

答案 0 :(得分:0)

一个非常简单的版本,只需将数据转换为十六进制打印。使用这些部分你应该能够得到二进制没问题。只需将转换保存到内存中,然后打印字符串。

包裹测试;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.Arrays;

/**
 *
 * @author User
 */
public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        File file = new File("C:\\Users\\User\\Downloads\\ltc1298-arduino-library-master.zip");
        byte[] bytes = new byte[(int)file.length()];
        try {
            DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream("C:\\Users\\User\\Downloads\\ltc1298-arduino-library-master.zip")));
            dataInputStream.readFully(bytes);    
            System.out.println(String.format(Arrays.toString(bytes)));
            for (byte b : bytes) {
                System.out.format("0x%x ", b);
            }
            dataInputStream.close();
        }
        catch (Exception e) {
            System.out.println("Error");
            e.printStackTrace();
        }
    }
}