1概要

このクイックチュートリアルでは、画像ファイルをBase64

String

にエンコードし、次にそれをデコードしてApache Common IOとJava 8ネイティブのBase64機能を使用する方法を説明します。

この操作は、任意のバイナリファイルまたはバイナリ配列に適用できます。

モバイルアプリからRESTエンドポイントなど、JSON形式のバイナリコンテンツを転送する必要がある場合に便利です。

Base64変換の詳細については、https://www.baeldung.com/java-base64-encode-and-decodeを参照してください。


2 Mavenの依存関係


pom.xml

ファイルに次の依存関係を追加しましょう。

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

Apache Commons IOの最新版はhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22commons-io%22%20AND%20a%3A%22commons-io%にあります。 22[メイヴン中央]。


3画像ファイルをBase64

String


に変換する

まず、ファイルの内容をバイト配列に読み込み、それをエンコードするためにJava 8

Base64

クラスを使用しましょう。

byte[]fileContent = FileUtils.readFileToByteArray(new File(filePath));
String encodedString = Base64.getEncoder().encodeToString(fileContent);


encodedString



A-Za-z0-9/

のセット内の文字の

String

であり、デコーダはこのセット外の文字をすべて拒否します。


4 Base64

String

を画像ファイルに変換

これでBase64

String

ができました。それをデコードしてバイナリコンテンツに戻し、新しいファイルに書き込みます。

byte[]decodedBytes = Base64.getDecoder().decode(encodedString);
FileUtils.writeByteArrayToFile(new File(outputFileName), decodedBytes);


5私たちのコードをテストする

最後に、ファイルを読み込んでBase64

String

にエンコードし、それを新しいファイルにデコードし直して、コードが正しく機能していることを確認できます。

public class FileToBase64StringConversionUnitTest {

    private String inputFilePath = "test__image.jpg";
    private String outputFilePath = "test__image__copy.jpg";

    @Test
    public void fileToBase64StringConversion() throws IOException {
       //load file from/src/test/resources
        ClassLoader classLoader = getClass().getClassLoader();
        File inputFile = new File(classLoader
          .getResource(inputFilePath)
          .getFile());

        byte[]fileContent = FileUtils.readFileToByteArray(inputFile);
        String encodedString = Base64
          .getEncoder()
          .encodeToString(fileContent);

       //create output file
        File outputFile = new File(inputFile
          .getParentFile()
          .getAbsolutePath() + File.pathSeparator + outputFilePath);

       //decode the string and write to file
        byte[]decodedBytes = Base64
          .getDecoder()
          .decode(encodedString);
        FileUtils.writeByteArrayToFile(outputFile, decodedBytes);

        assertTrue(FileUtils.contentEquals(inputFile, outputFile));
    }
}


6. 結論

この記事では、ファイルのコンテンツをBase64

String

にエンコードし、Base64

String

をバイト配列にデコードし、それをApache Common IOとJava 8の機能を使用してファイルに保存する基本について説明します。

いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/java-strings[over on GitHub]にあります。