base64图像使用java太长常量返回png
我正在尝试学习java base64到图像的转换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
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
方法似乎很有前途