解析并签名文件"f"。
我用Netbeans 8.02 (JDK8;Java版本1.8.0_45)。它读取XML文件(使用UTF-8编码),查找并替换字符"&",解析文件并对其签名。
从Netbeans执行这个程序是正确的。从windows XP shell执行相同的程序,我遇到关于要签名的文件的编码错误。在windows 7 shell中执行同样的程序,一切都很好。
有人知道是什么导致了这种不同的行为吗?为了尽量减少这种不同行为之间的距离,从而避免BOM和字符集的错误,我这样解决:
f = new File(PatInputFile);
String sif = readfile(PatInputFile,StandardCharsets.UTF_8);
byte[] contentInBytes = sif.replaceAll("&", "&").getBytes("UTF-8");
FileOutputStream fop =new FileOutputStream(f);
fop.write(contentInBytes);
fop.flush();
fop.close();
,
private static String readfile(String path, Charset encoding) throws IOException
{
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}