2013-04-29 7 views
1

안드로이드 애플리케이션이 APK 내부의 텍스트 파일을 읽지 않고 RAR 또는 ZIP 파일 (비밀번호 보호 기능 포함)에서 직접 읽는 동작을 변경하려고합니다 (APK 내부에 코딩 된 것과 동일한 보호 일 수 있음) . 그것은 내가이 질문을 한 것과 같은 프로젝트입니다 : How to convert an UTF String to ANSI and Create an ANSI text file in SSD with JAVA-ANDROID암호로 보호 된 RAR/ZIP에서 SSD 카드로 파일을 추출하거나 문자열로 보낼 수있는 방법은 무엇입니까?

하지만 어떻게해야할지 모르겠군요. 이 파일의 내용을 변경하려면 항상 각 APK 클라이언트를 다시 보내야합니다. 이 파일을 암호로 보호 된 압축 된 아카이브에 저장하면이 파일을 배포하고 클라이언트에게 휴대폰 SSD의 특정 경로에 넣도록 지시 할 수 있습니다.

내 응용 프로그램은 파일을 텍스트 파일로 추출하거나 SSD의 파일로 추출해야합니다 (보안 수준이 낮아 내용을 읽은 후 파일을 삭제해야합니다). 내가 어떻게 해? 제 3 자 라이브러리가 필요합니까? 코드를 보여줄 수 있습니까? 나는 단지 자바로 간청하고있다.

+0

그래서 당신의 내용을 읽을 수 개선 sdcard에 파일을 저장하지 않고 파일을? – Blackbelt

+0

예. String var에 직접 전달할 수는 있지만 불가능한 경우 적어도 파일을 추출하고, 읽고, 삭제하는 방법. – PSyLoCKe

+0

귀하의 우편 번호는 암호로 보호되어 있습니까? – Blackbelt

답변

2

당신은 zip4j을 시도하고이 수행 할 수 있습니다

public String extractInputStream() { 

    ZipInputStream is = null; 
    String extracted = null; 

    try { 
     // get the zip 
     ZipFile zipFile = new ZipFile("/path/to/my/file.zip"); 

     // set the password 
     if (zipFile.isEncrypted()) { 
      zipFile.setPassword("password"); 
     } 
     //get the file inside the zip 
     FileHeader fileHeader = zipFile.getFileHeader("yourfile.txt"); 

      if (fileHeader != null) { 
         is = zipFile.getInputStream(fileHeader); 
         //edited 
         extracted = new Scanner(is,"UTF-8").useDelimiter("\\A").next(); 
         //edited 
         is.close(); 

     } 
    } catch (ZipException e) { 
     e.printStackTrace(); //make something better here 
    } catch (FileNotFoundException e) { 
     e.printStackTrace();//make something better here 
    } catch (IOException e) { 
     e.printStackTrace();//make something better here 
    } catch (Exception e) { 
     e.printStackTrace();//make something better here 
    } 
    return extracted; 
} 

이 코드를 테스트하지 못했지만, 당신이 그것을 할 수 있고, ;-)

+0

거기에 'buf' var이있는 이유는 무엇입니까? 그것은 비어 있습니다! :-) – PSyLoCKe

+1

코드를 변경했습니다. http://javarevisited.blogspot.com/2012/08/convert-inputstream-to-string-java-example-tutorial.html (첫 번째 예) – n3k0

+0

isEncrypted () 형식이 ZipFile 인 경우 정의되지 않았습니다. – PSyLoCKe