투케이2K

806. (Android/Java) ZipOutputStream 사용해 txt 텍스트 파일 zip 파일 만들기 수행 본문

Android

806. (Android/Java) ZipOutputStream 사용해 txt 텍스트 파일 zip 파일 만들기 수행

투케이2K 2024. 6. 12. 20:10
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

        // ---------------------------------------------------------------
        // [로직 처리 실시]
        // ---------------------------------------------------------------
        // 외부 저장소 접근 관련 참고 정보 : 
        // - 안드로이드 하위 (os 11 이하) 인 경우 외부 저장소 읽기 , 쓰기 권한 부여 필요
        // - 안드로이드 상위 (os 11 이상) 인 경우 AndroidManifest.xml 파일에서 MANAGE_EXTERNAL_STORAGE 권한 부여 수행
        //    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
        // - 안드로이드 외부 저장소 접근 권한이 없는 경우는 앱 내부 캐시 저장소에 파일 저장 후 zip 파일 생성 수행
        // ---------------------------------------------------------------
        try {

            // [공용 저장소 다운로드 폴더 >> 특정 폴더 지정]
            String downLoadfilePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
            downLoadfilePath += "/LOG_SAVE_FOLDER/";

            List<String> filePaths = Arrays.asList(
                    downLoadfilePath + "APP_CRASH_LOG.txt",
                    downLoadfilePath + "APP_USE_LOG.txt"
            );

            String zipPath = downLoadfilePath + "output.zip"; // [Zip 파일 생성 명칭]

            try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipPath))) {
                for (String filePath : filePaths) {

                    File fileToZip = new File(filePath);
                    zipOut.putNextEntry(new ZipEntry(fileToZip.getName())); // [파일 추가]

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // [오레오 이상]
                        Files.copy(fileToZip.toPath(), zipOut); // [Zip 파일 경로로 복사]
                    }
                }
                S_Log._W_("압축 파일 생성 성공", null);
            }
            
        }
        catch (Exception e){
            e.printStackTrace();
        }

 

반응형
Comments