Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-在BLOB文件中保存数据_Java_Database_Jdbc_Binary Data - Fatal编程技术网

Java-在BLOB文件中保存数据

Java-在BLOB文件中保存数据,java,database,jdbc,binary-data,Java,Database,Jdbc,Binary Data,我想将大量二进制数据文件(pdf、图像、office文档…)保存到一个“blob”文件中。现在我不确定什么更好,用java Serializable保存东西,并将东西保存到光盘,或者使用像sqlite这样的数据库来实现事情。还是有第三种更好的方法? 我的问题是,这些方法在访问速度和数据完整性方面表现如何。 在这个单一的blob文件中,有一天可能会有数百个pdf文件。 您喜欢哪种方式?绝对不要使用java.io.Serializable。只需按原样将二进制数据写入其目标。序列化只会增加不必要的开销

我想将大量二进制数据文件(pdf、图像、office文档…)保存到一个“blob”文件中。现在我不确定什么更好,用java Serializable保存东西,并将东西保存到光盘,或者使用像sqlite这样的数据库来实现事情。还是有第三种更好的方法? 我的问题是,这些方法在访问速度和数据完整性方面表现如何。 在这个单一的blob文件中,有一天可能会有数百个pdf文件。
您喜欢哪种方式?

绝对不要使用
java.io.Serializable
。只需按原样将二进制数据写入其目标。序列化只会增加不必要的开销,并使保存的数据不能用于Java以外的其他工具

我也不会把它放在一行的一个字段中。它使所有这些都紧密耦合,存储/检索单个条目的成本可能更高。而是将每个存储在自己的行中。如有必要,可以使用外键通过另一列链接/引用其中一列

现在是Java代码,JDBCAPI提供了将二进制数据保存到数据库中的方法。在(内存占用)
byte[]
中还有一种方法。然后,要检索它,您可以使用或

另一方面,您也可以使用通常的JavaIO方式将这些文件存储在本地磁盘文件系统中,并使用读取它们。如有必要,可以在数据库中存储文件路径/名称。这将使二进制数据与数据库分离,从而降低了可移植性,但更好地用于其他目的

另见

绝对不要使用
java.io.Serializable
。只需按原样将二进制数据写入其目标。序列化只会增加不必要的开销,并使保存的数据不能用于Java以外的其他工具

我也不会把它放在一行的一个字段中。它使所有这些都紧密耦合,存储/检索单个条目的成本可能更高。而是将每个存储在自己的行中。如有必要,可以使用外键通过另一列链接/引用其中一列

现在是Java代码,JDBCAPI提供了将二进制数据保存到数据库中的方法。在(内存占用)
byte[]
中还有一种方法。然后,要检索它,您可以使用或

另一方面,您也可以使用通常的JavaIO方式将这些文件存储在本地磁盘文件系统中,并使用读取它们。如有必要,可以在数据库中存储文件路径/名称。这将使二进制数据与数据库分离,从而降低了可移植性,但更好地用于其他目的

另见

假设您想要创建一个大文件(而不是某种数据库条目),您可能想要使用java.util.zip包来创建这些PDF的zip文件,最好是未压缩的(因为它更快,PDF通常压缩得不好)


通过这样做,您可以轻松地使用第三方工具从“blob文件”(即zip存档)中提取这些PDF。

假设您想要创建一个大文件(而不是某种数据库条目),您可能想要使用java.util.zip包创建这些PDF的zip文件,最好是未压缩的(因为它速度更快,而且PDF通常压缩得不好)


通过这样做,您可以轻松地使用第三方工具从“blob文件”(即zip存档)中提取这些PDF。

此方法可从数据库中获取二进制文件或其字节

static void BackfileToDecktop(String s) {
   File outFile=new File("URL");//example (C:\\Users\\osama\\Desktop)

   search(4);//search the file in data base to fetch it
   try{
      FileOutputStream fos=new FileOutputStream(outFile);

      byte[]l=columnByte;//column of bytes come by search method get it from database by its primary key
      for(int i=0;i<l.length;i++) {
          fos.write(l[i]);
      }

      if(fos!=null) { 
          fos.close();//write all file bytes 
      }

      JOptionPane.showMessageDialog(null,"File was fetched successfully","Untitled pane",JOptionPane.INFORMATION_MESSAGE);
 } catch(java.io.IOException e){
      System.err.println(e);
 }
static void backpletodecktop(字符串s){
File outFile=new File(“URL”);//示例(C:\\Users\\osama\\Desktop)
search(4);//在数据库中搜索文件以获取它
试一试{
FileOutputStream fos=新的FileOutputStream(输出文件);
byte[]l=columnByte;//通过搜索方法获得的字节列通过其主键从数据库中获取

对于(inti=0;i,此方法用于从数据库获取二进制文件或其字节

static void BackfileToDecktop(String s) {
   File outFile=new File("URL");//example (C:\\Users\\osama\\Desktop)

   search(4);//search the file in data base to fetch it
   try{
      FileOutputStream fos=new FileOutputStream(outFile);

      byte[]l=columnByte;//column of bytes come by search method get it from database by its primary key
      for(int i=0;i<l.length;i++) {
          fos.write(l[i]);
      }

      if(fos!=null) { 
          fos.close();//write all file bytes 
      }

      JOptionPane.showMessageDialog(null,"File was fetched successfully","Untitled pane",JOptionPane.INFORMATION_MESSAGE);
 } catch(java.io.IOException e){
      System.err.println(e);
 }
static void backpletodecktop(字符串s){
File outFile=new File(“URL”);//示例(C:\\Users\\osama\\Desktop)
search(4);//在数据库中搜索文件以获取它
试一试{
FileOutputStream fos=新的FileOutputStream(输出文件);
byte[]l=columnByte;//通过搜索方法获得的字节列通过其主键从数据库中获取
对于(int i=0;i