1. 개요

이 빠른 사용방법(예제)에서는 이미지 파일을 Base64 String 으로 인코딩 한 다음이를 디코딩하여 Apache Common IO 및 Java 8 기본 Base64 기능을 사용하여 원본 이미지를 검색하는 방법을 다룰 것 입니다.

이 작업은 모든 이진 파일 또는 이진 배열에 적용될 수 있습니다. 모바일 앱에서 REST 엔드 포인트로 이진 콘텐츠를 JSON 형식으로 전송해야 할 때 유용합니다.

Base64 변환에 대한 자세한 내용은 여기에서이 문서를 확인 하십시오 .

2. Maven 의존성

pom.xml 파일에 다음 의존성을 추가해 보겠습니다 .

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

Maven Central 에서 최신 버전의 Apache Commons IO를 찾을 수 있습니다 .

3. 이미지 파일을 Base64 문자열로 변환

먼저 파일 내용을 바이트 배열로 읽고 Java 8 Base64 클래스를 사용하여 인코딩 해 보겠습니다 .

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

encodedString는 A는 문자열 의 문자 세트 A-ZA-Z0-9 + / 및 디코더는이 세트 밖에 어떤 문자를 거부한다.

4. Base64 문자열 을 이미지 파일로 변환

이제 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 기능을 사용하여 파일에 저장하는 기본 방법을 설명합니다.

항상 그렇듯이 코드 스 니펫은 GitHub 에서 찾을 수 있습니다 .