我正在使用Eclipse.我有以下代码行:
wr.write(new sun.misc.BASE64Encoder().encode(buf));
Run Code Online (Sandbox Code Playgroud)
Eclipse将此行标记为错误.我导入了所需的库:
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
Run Code Online (Sandbox Code Playgroud)
我使用Apache Commons作为建议的解决方案,包括:
import org.apache.commons.*;
Run Code Online (Sandbox Code Playgroud)
并导入从以下网址下载的JAR文件:http://commons.apache.org/codec/
但问题仍然存在.Eclipse仍然显示前面提到的错误; 请指教.
我们可以将字节数组转换为Java中的InputStream吗?我一直在网上看,但找不到它.
我有一个具有InputStream作为参数的方法.
cph我有的InputStream 是base64编码所以我不得不使用它解码它
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(cph);
Run Code Online (Sandbox Code Playgroud)
现在我如何decodedBytes再次转换为InputStream?
我正在尝试解码一个简单的Base64字符串,但我无法这样做.我目前正在使用该org.apache.commons.codec.binary.Base64软件包.
我正在使用的测试字符串是:abcdefg,使用PHP编码YWJjZGVmZw==.
这是我目前正在使用的代码:
Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;
Run Code Online (Sandbox Code Playgroud)
上面的代码不会抛出错误,而是不会按预期输出解码后的字符串.
题
是Java 8 java.util.Base64MIME编码器和解码器一个下拉更换为不支持的,内部的Java API sun.misc.BASE64Encoder和sun.misc.BASE64Decoder?
到目前为止我的想法和原因
根据我的调查和快速测试(见下面的代码),它应该是替代品,因为
sun.misc.BASE64Encoder基于其JavaDoc是RFC1521中规定的BASE64字符编码器.此RFC是MIME规范的一部分......java.util.Base64基于JavaDoc 使用RFC 2045表1中指定的"Base64 Alphabet" 进行编码和解码操作...在MIME下假设RFC 1521和2045没有重大变化(我找不到任何变化)并且基于我使用Java 8 Base64 MIME编码器/解码器的快速测试应该没问题.
我在找什么
以供参考
我的测试代码
public class Base64EncodingDecodingRoundTripTest {
public static void main(String[] args) throws IOException {
String test1 = " ~!@#$%^& *()_+=`| }{[]\\;: \"?><,./ ";
String test2 = test1 + test1;
encodeDecode(test1);
encodeDecode(test2);
}
static …Run Code Online (Sandbox Code Playgroud) 我在将gif图像转换为基本64字符串时遇到问题.
当我转换它时,代码加起来像100,000 AAAAAA,而图像真的很小!
这是我的代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
try
{
FileWriter fstream = new FileWriter("./out.txt");
BufferedWriter out = new BufferedWriter(fstream);
File folder = new File("./flags/");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
Main.readFile(out, listOfFiles[i]);
}
}
out.close();
System.out.println("Done");
}
catch (Exception e) {}
}
public static void readFile(BufferedWriter out, File file)
{
try
{ …Run Code Online (Sandbox Code Playgroud) 我需要在GWT中将短字符串编码为base 64并解码服务器上的base 64字符串.任何人都有实用程序类或库?
我有一段代码连接到Socket服务器,它工作正常.
Socket socket = new Socket();
socket.connect(new InetSocketAddress(address, port));
Run Code Online (Sandbox Code Playgroud)
现在我想通过HTTP代理连接,我该怎么办?
我试过这个并且失败了
SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
Socket socket = new Socket(proxy);
socket.connect(new InetSocketAddress(address, port));
Run Code Online (Sandbox Code Playgroud)
这篇文章建议我应该使用Jakarta Commons HttpClient,但如何使用它通过HTTP代理连接Socket服务器?
更新:我使用SOCKS代理,如果我使用HTTP代理它不起作用:
SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
Socket socket = new Socket(proxy);
socket.connect(new InetSocketAddress(address, port));
Run Code Online (Sandbox Code Playgroud)
它会抛出IllegalArgumentException
java.lang.IllegalArgumentException: Proxy is null or invalid type
at java.net.Socket.<init>(Socket.java:88)
Run Code Online (Sandbox Code Playgroud) 我刚试过一个示例代码表格网,它显示如下警告
SimpleConvertImage.java:7:警告:com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专有API,可能会在将来的版本导入com.sun.org.apache.xerces中删除. internal.impl.dv.util.Base64; ^
SimpleConvertImage.java:16:警告:com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专有API,可能会在将来的版本中删除String base64String = Base64.encode(baos.toByteArray()); ^
SimpleConvertImage.java:19:警告:com.sun.org.apache.xerces.internal.impl.dv.util .Base64是内部专有API,可能会在将来的发布字节中删除[] bytearray = Base64.decode(base64String) ; ^
代码如下
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class SimpleConvertImage {
public static void main(String[] args) throws IOException{
String dirName="/root/Desktop";
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
BufferedImage img=ImageIO.read(new File(dirName,"Screenshot.png"));
ImageIO.write(img, "png", baos);
baos.flush();
String base64String=Base64.encode(baos.toByteArray());
baos.close();
byte[] bytearray =Base64.decode(base64String);
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray));
ImageIO.write(imag, "png", new File(dirName,"snap3.png"));
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个xhtml文档,我正在使用flyingsaucer变成PDF.xhtml有几个标签,内嵌base64编码图像.xhtml的来源是动态的,因此图像标签所在的结构可能会有所不同.这是标签的样子:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAagAAAEuCAYAAADbW4YFAAAgAElEQVR4Aex9CYBdRZ ...
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中查看html时,图像显示正确,但是,img元素不会在最终的PDF中呈现.以下是我如何渲染它来创建PDF.
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(builder.parse(source), "");
renderer.layout();
renderer.createPDF(response.getOutputStream(),true);
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道我应该采取什么方法来实现这一目标?我看到了这个帖子,但是,我正在使用内联图像,所以我看不出如何使用Edd的解决方案来实现这一点.
提前致谢
java pdf-generation embedded-resource flying-saucer xhtmlrenderer
java ×10
base64 ×6
encoding ×1
gwt ×1
httpclient ×1
image ×1
inputstream ×1
java-8 ×1
mime ×1
sockets ×1