Java 如何检查a";字节[]b";(保存文件内容)是否用base64编码。。?在爪哇
这里我有一个代码,它接受字节数组中的文件内容,在将其转换为base64并返回之前,我想检查它是否为base64格式。。有人能帮我吗Java 如何检查a";字节[]b";(保存文件内容)是否用base64编码。。?在爪哇,java,Java,这里我有一个代码,它接受字节数组中的文件内容,在将其转换为base64并返回之前,我想检查它是否为base64格式。。有人能帮我吗 import sun.misc.BASE64Encoder; public static String encodeInByteArray(byte[] b) { BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(b); } 下面是我尝试检查base64格式
import sun.misc.BASE64Encoder;
public static String encodeInByteArray(byte[] b)
{
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(b);
}
下面是我尝试检查base64格式的代码:
import sun.misc.BASE64Encoder;
import java.util.regex.Pattern;
public class Encoder
{
public static String encodeInByteArray(byte[] b)
{
String regex =
"([A-Za-z0-9+/]{4})*"+
"([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)";
Pattern patron = Pattern.compile(regex);
String s=b.toString();
if (!patron.matcher(s).matches()){
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(b);
}
else
return s;
}
public static void main(String [] args) throws FileNotFoundException
{
FileInputStream fs= new FileInputStream("Sample.pdf");
String s= fs.toString();
byte[] b = s.getBytes();
encodeInByteArray(b);
}
}
第一种解决方案是,您可以解析文件,或者部分解析文件(以节省资源),并确定一行是否是base64编码的。有关字符串base64编码检查,请参见此答案 第二种解决方案是,如果您完全控制了文件的保存和编码,您可以在文件的开头或结尾放置一个字节,指示其base64是否已编码,这应该比上述解决方案更快。调用
b.toString()
没有达到预期效果-结果字符串类似于[B@106d69c
,因为数组不重写toString
(类似地,调用fs.toString()
不会将文件内容作为字符串提供)
要从字节[]
获取字符串
,请使用构造函数:
new String(b)
但您可能需要指定特定的字符集,例如:
new String(b, StandardCharsets.ISO_8859_1)
否则,根据JVM的配置,您可能会得到不同的结果。您可以使用apache的
Base64.isBase64(byte[]arrayOctet)
请注意,空格在当前是有效的,如中所述