base64图像使用java太长常量返回png

base64图像使用java太长常量返回png,java,jar,base64,Java,Jar,Base64,我正在尝试学习java base64到图像的转换 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import redis.clients.jedis.Jedis; public class HelloWorld { public static void main(String[] args) throws IOException { byte[] b

我正在尝试学习java base64到图像的转换

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import redis.clients.jedis.Jedis;

public class HelloWorld {

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

        byte[] btDataFile = new sun.misc.BASE64Decoder().decodeBuffer("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn4AAAMUCAYAAAAiyCroAAAMGWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUU0kXnldSCEkogQhICb0J0qv0XgSkg42QBAglhkBQsSOLCq4FFVEUFV0Rsa0FkLUgo...AAABJRU5ErkJggg==");
        File of = new File("/Users/myfolder/Desktop/yourFile.png");
        FileOutputStream osf = new FileOutputStream(of);
        osf.write(btDataFile);
        osf.flush();



    }
}
问题是它的常数太长(它是:)。现在我能做些什么来实现这个目标?
谢谢

简单的回答是,在源代码中不应该有这么长的
字符串作为常量。如何更改取决于您的实际情况:

  • 如果您只是在学习base64,请使用较短的字符串。它将达到同样的学习效果
  • 如果这只是编译器实现限制问题(即问题是
    字符串
    常量限制,而不是RAM内存限制),请将文本放入文件并在运行时加载。或者,如果您确实坚持要将文本嵌入源代码中,请将
    字符串
    拆分为几个大小不变的块,并在运行时将它们连接起来
  • 如果图像的base64编码对于进程可用的RAM内存量来说实在太大,请使用流式方法(我没有使用过
    sun.misc
    包,但是快速浏览一下就会发现
    decodeAtom
    decodeBufferToByteBuffer
    方法似乎很有前途

简单的回答是,您不应该在源代码中将这么长的
字符串作为常量。如何更改它取决于您的实际情况:

  • 如果您只是在学习base64,请使用较短的字符串。它将达到相同的学习效果
  • 如果这只是编译器实现限制问题(即问题是
    字符串
    常量限制,而不是RAM内存限制),将文本放入文件并在运行时加载。或者,如果您确实坚持要将文本嵌入源代码中,请将
    字符串
    拆分为几个恒定大小的块,并在运行时将它们连接起来
  • 如果图像的base64编码对于进程可用的RAM内存量来说实在太大,请使用流式方法(我没有使用过
    sun.misc
    包,但是快速浏览一下就会发现
    decodeAtom
    decodeBufferToByteBuffer
    方法似乎很有前途