【问题标题】:How to store a PDF file in SQLite Data base in Android如何在 Android 的 SQLite 数据库中存储 PDF 文件
【发布时间】:2011-04-26 10:18:09
【问题描述】:

实际上,我想在我们的Android手机中下载PDF文件,并且不想在他尝试通过将手机连接到PC打开时授予在PC中打开PDF文件的权限。 所以我想将 PDF 文件存储在 SQLite 数据库解决方案中。

我的问题是……
是否可以将 PDF 文件存储在 SQLite 数据库中?如果是,如何? 或者有没有其他方法可以实现相同的功能?

请帮帮我...

谢谢...

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    你可以。只需读取pdf文件的所有字节并存储在sqlite db的blob字段中。

    【讨论】:

    • 感谢您的回复。我是android开发的新手,所以你能帮我一些示例代码如何将pdf转换为字节并存储在blob中......
    【解决方案2】:

    一种解决方案是使用 blob 并将文件的原始数据作为列存储在 db 中。

    我认为最好将文件存储在Internal Storage 和数据库中的其他解决方案只是为了存储文件路径。内部存储对您的应用程序来说是私有的,因此没有人可以访问这些文件。但是在这两种情况下都要小心,文件都存储在手机存储中,当手机存储空间不足时,人们会发现自己处于这种情况。

    【讨论】:

    • 感谢您的回复....我发现一件事......,将 pdf 转换为字节数组并存储在 Blob 中......但无法将 pdf 数据转换为字节数组。谢谢...
    • 您不必关心 pdf 的内容是什么,只需将文件转换为字节数组即可。 stackoverflow.com/questions/858980/file-to-byte-in-java
    • 亲爱的 MOjo 有一件事......如果 PDf 文件是图像和文本的混合,在这种情况下,我们简单地将其转换为字节,但我想再次转换为 pdf 文件并在 android 手机中显示如何?如果可能的话,请帮助我提供一些代码示例。
    • 基本上 byte[] 只是文件的序列化。所以如果你有 File -> byte[] -> File 你会得到相同的文件,无论它是 pdf 还是其他文件。这是如何将字节 [] 写入文件 java-examples.com/write-byte-array-file-using-fileoutputstream 的示例
    • 亲爱的 Mojo 非常感谢您的帮助...现在我可以将字节数组转换为 pdf 但 Android PDF 视图无法打开该 pdf 文件,显示格式错误。请给我有一些想法。
    【解决方案3】:

    AFAIK Sqlite 支持 BLOB 数据类型,我使用 BLOB 将图像存储到 MySql 数据库中,我认为您可以执行相同的操作来读取文件内容并将其存储到 SQLite 中的 BLOB 列中

    【讨论】:

      【解决方案4】:

      您可以使用 BLOB 数据类型将 PDF 文件存储在数据库中,但这不是我的建议,因为您使用 SQLlite 是可能的。有人说在数据库中存储二进制文件是一种肮脏的方式。大型数据库将导致查询速度变慢。

      我的解决方案是将 PDF 文件存储在目录中并使用指向文件名的字符串指针。这将导致更快的查询和更小的数据库。唯一的缺点是您必须编写功能来重命名重复条目并在删除条目时从文件系统中删除文件。

      如果数据库中的(大)二进制文件会使数据库变慢,请发表评论...

      【讨论】:

        猜你喜欢
        • 2013-09-25
        • 2016-12-19
        • 2015-05-14
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多