【问题标题】:Encode a file in Base64 format - Blackberry/J2ME以 Base64 格式编码文件 - Blackberry/J2ME
【发布时间】:2011-06-17 20:24:27
【问题描述】:

我正在尝试将文件上传到 http 服务器,但首先我需要将其编码为 base64 格式。我怎么做?我打开了一个文件连接,但我不知道如何对文件进行编码。

【问题讨论】:

标签: java blackberry java-me


【解决方案1】:

由于 BlackBerry 是一个 J2ME 环境,您不能使用常规的 J2SE 类,例如 sun.misc.BASE64Encoder - 但是有一个本机 Base64OutputStream 类应该可以达到相同的目的。有关详细信息,请参阅 javadocs。

【讨论】:

  • @Joachim Sauer 这并没有改变它在 BlackBerry 或其他 java-me 设备上不可用的事实。马克将他的回答与迈克的回答进行对比。
【解决方案2】:

查看这个 java-me Base64 类以获取 base64 格式的编码。

有关更多示例,请查看koders 或此Java 和 ME 博客文章:Base64 encode-decode in JavaMe

【讨论】:

  • 虽然在 BlackBerry 上特别有 Base64InputStream 和 Base64OutputStream 类(从 OS 4.6 开始),但您无需使用第三方类即可执行此操作。无论哪种方式都可以。
  • 仅供参考,Base64InputStream 和 Base64OutputStream 类已经存在了很长时间 - 自 3.6.0 或 4.0.2 以来 - 它只是 4.6 中添加的 Base64OutputStream(带有 newlineTrigger)的新构造函数。
【解决方案3】:

如果您在 Java 中执行此操作,您可以使用 BASE64Encoder 并写入新的编码文件:

import sun.misc.BASE64Encoder;

     public static void main(String[] args) throws Exception {

        File inputFile = new File(yourUnencodedFile);
        File outputFile = new File(yourEncodedFile);

        BASE64Encoder encoder = new BASE64Encoder();
        encoder.encode(
            new FileInputStream(inputFile),
            new FileOutputStream(outputFile)
        );

然后只使用编码的输出文件

【讨论】:

  • 不幸的是,该类在 J2ME 中不可用
  • 该类甚至不是 Java SE 标准的一部分,使用它会使您的应用程序无法移植,即使跨不同的 Java SE 实现也是如此(尝试在 OpenJDK 上运行该代码)。而在非 Java SE JVM(即 Java ME 或 Blackberry)上,您肯定无法访问它。
  • 是的,我很抱歉 OP,我在我的上方看到了 Java 标签和答案,尽管出于某种原因,它是在 Java 中完成的(不再为我提供深夜 SO 答案)。还有@Joachim,谢谢,我其实不知道公共界面java.sun.com/products/jdk/faq/faq-sun-packages.html不支持sun包所以谢谢你教我
猜你喜欢
  • 2018-06-13
  • 2010-12-03
  • 1970-01-01
  • 2011-10-31
  • 2016-03-17
  • 2022-10-18
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多