java - 如何将 Java OutputStream 与 OutputStreamWriter 混合使用?

标签 java

我目前正在使用 BufferedWriter 将大量文本写入文件。我将 BufferedWriter 对象传递给代码中的各种函数。我现在需要在函数中使用流对象,以便在一处使用 Base64OutputStream 类。我不确定如何更改我的所有代码,而不需要为每个 .write() 调用将字符串转换为字节,并且还避免调用 IOUtils.write() 等辅助函数,因为这听起来会影响性能。

我应该放弃并调用 IOUtils.write() 函数来进行字符串写入吗?与对流或 writer write() 函数的干净调用相比,该代码肯定很难看。

我可以创建一个流对象和一个编写器对象并传递它们,根据需要在它们之间切换(这听起来像是只会崩溃或导致损坏)?

Java 对我来说是第二语言,所以我根本不知道我可以使用的所有可能的类和函数。我希望代码尽可能具有可读性和可维护性。

最佳答案

An OutputStreamWriter is a bridge from character streams to byte streams

因此,您可以创建一个 OutputStream,将其包装在 OutputStreamWriter 中,写入 OutputStreamWriter 会将字符编码为字节并调用对应的OutputStream.write

在这种特定情况下,请注意文档中的内容

It is mandatory to close the [Base64OutputStream] after the last byte has been written to it, otherwise the final padding will be omitted and the resulting data will be incomplete/inconsistent

依次关闭底层流。因此,如果写入 Base64OutputStream 不是您的最后一个操作,您可能需要关闭并重新打开原始流,从而使 Writer 失效。

关于java - 如何将 Java OutputStream 与 OutputStreamWriter 混合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532996/

相关文章:

java - 对自定义类 arraybuffer 进行排序并获取 scala 中的子集

java - Spring Security 忽略失败的身份验证

Java - 将带有注释的类传递给泛型方法

java - 如何在 webview 中加载内部链接?

java - 将 mac jdk 版本设置为 1.8

java - JPA persit 以多对一关系创建新的现有实体

java - 在 JSP 中使用 request.getParameter 会导致 NullPointerException

java - 在大多数情况下我们应该定义 getter setter 吗?

java - Android,如何将 LoaderManager 和 Loader 与 sqldatabase 结合使用

java - Jsoup读取图像速度很慢