格式化清单中的长字符串

时间:2019-03-11 06:30:00

标签: java

我正在创建一个Eclipse插件来处理项目的 Manifest.MF 。但是格式不是我喜欢的格式。

考虑以下代码:

    final String[] bundles = { "org.acme.alpha", "org.acme.beta", "org.acme.gamma", "org.acme.delta", "org.acme.epsilon", "org.acme.zeta", "org.acme.eta", "org.acme.theta", "org.acme.iota", "org.acme.kappa", "org.acme.lambda" };

    try (ByteArrayInputStream in = new ByteArrayInputStream("Manifest-Version: 1.0\n\n".getBytes())) {
        Manifest manifest = new Manifest(in);
        manifest.getMainAttributes().putValue("Require-Bundle", Arrays.stream(bundles).collect(Collectors.joining(",")));
        manifest.write(System.out);
    }

相关的输出如下:

Require-Bundle: org.acme.alpha,org.acme.beta,org.acme.gamma,org.acme.del
 ta,org.acme.epsilon,org.acme.zeta,org.acme.eta,org.acme.theta,org.acme.
 iota,org.acme.kappa,org.acme.lambda

这看起来很难看,尤其是如果您将bundle-versions添加到组合中。我宁愿每捆一线。

天真的方法是自己添加一个换行符,因此 Manifest.MF 不需要每隔72个字符就换行。因此,我添加了Arrays.stream(bundles).collect(Collectors.joining(",\n "))。结果是:

Require-Bundle: org.acme.alpha,
 org.acme.beta,
 org.acme.gamma,
 org.acme.
  delta,
 org.acme.epsilon,
 org.acme.zeta,
 org.acme.eta,
 org.acme.theta,
 o
  rg.acme.iota,
 org.acme.kappa,
 org.acme.lambda

看上去几乎是正确的,除了...每72个字符还有一个换行符,可见性只差一点。

除了作为块以外,是否有其他方法可以格式化清单文件中的长字符串?如果是这样,我该怎么办?

0 个答案:

没有答案