如何使用Java将编码文本写入文件?

时间:2015-04-29 08:54:39

标签: java

如何使用带有FileWriter的java / jsp将编码文本写入文件?

FileWriter testfilewriter = new FileWriter(testfile, true);
testfilewriter.write(testtext);

testtext:- is text
testfile:- is String (Encoded)

我要做的是用Base64编码testfile并将其存储在文件中。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

您可以自己进行编码,然后根据@Alper OR的建议写入文件,如果您想创建一个在编写和读取文件时进行编码/解码的流,那么apache commons编解码库会派上用场Base64OutputStreamBase64InputStream

有趣的是,Java 8具有类似的API Base64.Encoder。查看wrap method

希望这有帮助。

答案 1 :(得分:0)

要遵循的方法取决于您使用的算法,编写编码文件与在java中编写文件相同

恕我直言,如果您尝试使用 jsp ,请使用servlet。因为jsp不适用于业务层,而是用于servlet。

答案 2 :(得分:0)

您无法直接使用FileWriter执行此任务。

您问过如何做到这一点,但您没有提供有关您使用的JDK和库的任何信息,因此这里有一些使用标准工具的解决方案。

如果您使用的是 Java 8

String testFile = "";
try (Writer writer = new OutputStreamWriter(
    Base64.getEncoder().wrap(
        java.nio.file.Files.newOutputStream(
            Paths.get(testFile),
            StandardOpenOption.APPEND)),
    StandardCharsets.UTF_8)
    ) {
  writer.write("text to be encoded in Base64");
}

如果您使用 Java 7与Guava

String testFile = "";
CharSink sink = BaseEncoding.base64()
    .encodingSink(
        com.google.common.io.Files.asCharSink(
            new File(testFile),
            StandardCharsets.UTF_8,
            FileWriteMode.APPEND))
    .asCharSink(StandardCharsets.UTF_8);
try (Writer writer = sink.openStream()) {
  writer.write("text to be encoded in Base64");
}

如果您使用 Java 6与Guava

String testFile = "";
CharSink sink = BaseEncoding.base64()
    .encodingSink(
        com.google.common.io.Files.asCharSink(
            new File(testFile),
            Charsets.UTF_8,
            FileWriteMode.APPEND))
    .asCharSink(Charsets.UTF_8);
Closer closer = Closer.create();
try {
  Writer writer = closer.register(sink.openStream());
  writer.write("text to be encoded in Base64");
} catch (Throwable e) { // must catch Throwable
  throw closer.rethrow(e);
} finally {
  closer.close();
}

我对其他图书馆的了解不多,所以我不会假装我这样做并添加其他图书馆。