首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于printStream (OutStream),PrintStream构造函数的声纳问题为“删除此构造函数的使用”;

对于printStream (OutStream),PrintStream构造函数的声纳问题为“删除此构造函数的使用”;
EN

Stack Overflow用户
提问于 2020-06-15 21:30:31
回答 1查看 183关注 0票数 0

我正在使用java代码生成CSR,我从在线网站journaldev.com获取了代码。

代码语言:javascript
复制
public byte[] generateCSR(final String sigAlg, final PublicKey publicKey, final PrivateKey 
privateKey, final String organisationUrl) {

final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
final PrintStream printStream = new PrintStream(outStream);

final X500Name x500Name = new X500Name("CN=" + organisationUrl);

final Signature signature = Signature.getInstance(sigAlg);

signature.initSign(privateKey);

final PKCS10 pkcs10 = new PKCS10(publicKey);

pkcs10.encodeAndSign(x500Name, signature);
pkcs10.print(printStream);

return outStream.toByteArray();

正如您在上面看到的,我使用了printStream构造函数,它接受ByteArrayOutputStream作为参数。因为声纳说不要使用这个构造函数,因为这个构造函数将使用系统的默认字符集,任何人都知道我如何解决这个问题?

我已经尝试了一种替代代码:

代码语言:javascript
复制
final Writer writer = new OutputStreamWriter(outStream, StandardCharsets.UTF_8);
final OutputStream out = new WriterOutputStream(writer,StandardCharsets.UTF_8);
final PrintStream printStream = new PrintStream(out, Boolean.FALSE, "UTF-8");

此代码运行,但它返回一个空结果。你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-15 21:39:28

假设您想要编码为UTF-8,请替换

代码语言:javascript
复制
final PrintStream printStream = new PrintStream(outStream);

有了这个:

代码语言:javascript
复制
final PrintStream printStream = new PrintStream(outStream, true, "UTF-8");

您还需要捕获UnsupportedEncodingException。这个异常应该永远不会发生(因为"UTF-8“总是被支持的),但是你仍然需要捕获它(或者声明它),因为它是一个检查过的异常。

如果您不希望打印流自动刷新(即true),您可以添加

代码语言:javascript
复制
printStream.flush();

代码语言:javascript
复制
printStream.close();

return之前。我怀疑您笨拙地尝试纠正问题而没有得到任何输出的原因是pks10.print写入的数据没有被刷新到ByteArrayOutputStream

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62389276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档