Java:流、读取器、字符缓冲区、字符串生成器等之间可能的泛化?

标签 java string stream buffer nio

背景故事:

XML 有这些 Source 和 Result 接口(interface)。 这些是 Java 中不同 XML 技术之间的适配器。 这些类的实例表示 DOM、SAX、JAXB、XML 流、XML 事件 (甚至更多?)。

问题:

那么,有什么东西可以与普通的旧字符串相媲美吗?一些概括 介于以下之间?

  • [输入|输出]流
  • 读取器|写入器
  • 字符串缓冲区
  • StringBuilder
  • CharBuffer(来自 NIO)
  • 文件 (或者我们当中的 JDK7 粉丝的路径)
  • (最后)CharSequence

也许有一些通用的 API(Apache commons 之类的东西...?)提供了这样的功能?

澄清示例:

经典方法的用法:

接口(interface)需要能够从所有可能的源(结果)读取(写入)字符:

interface SomeInterface {
    readFrom(CharacterSequence source);
    readFrom(InputStream source);
    readFrom(Reader source);
    readFrom(File source);
    // ...
    writeTo(CharacterSequence result);
    writeTo(OutputStream result);
    writeTo(Writer result);
    writeTo(File result);
    // ...
}

按预期方法使用:

通过一些虚构的 CharacterSourceCharacterResult 接口(interface),现在可以使用每种方法进行读/写:

interface SomeInterface {
    readFrom(CharacterSource source);
    writeTo(CharacterResult result);
}

预期的方法实现,可能的层次结构:

interface CharacterSource
+ class CharBufferSource
+ class InputStreamSource
+ class ReaderSource
+ class FileSource
+ ...

interface CharacterResult
+ class CharBufferResult
+ class OutputStreamResult
+ class WriterResult
+ class FileResult
+ ...

如果不存在这样的功能,我应该编写自己的迷你 API 吗? (对于更大的 API,我目前正在参与)

这是什么意思?

最佳答案

this (是的 - Apache Commons)。

关于Java:流、读取器、字符缓冲区、字符串生成器等之间可能的泛化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567808/

相关文章:

java - 收集垃圾时 DataInputStream 是否关闭包装的 InputStream?

java - 如何在使用自己的证书时启用 PDF LTV 签名 (Adobe java PDFBox)

java - 为什么我无法在 'SettingActivity' 中获取个人资料图片?

python - 从文件中删除非 ASCII *行*?

vb.net - 使用 NAudio 流式传输非 PCM 原始音频

java - Spring OutputStream - 使用 IE 下载 pptx

java - 换行符缩进? ( java )

java - 从字节转换为字符串的任何其他逻辑

python - 如何对具有负数和字符的字符串进行自然排序?

c - 将字符串拆分为字符串数组