두 개의 미디어 폴더를 하나의 zip 폴더에 넣었으며 zip 폴더에 총 100,000 개의 미디어 파일이 있습니다. zip 폴더의 특정 폴더에서 하나의 파일을 재생해야합니다. 문제는 먼저 Zip 폴더의 전체 내용을 완전히 읽은 다음 필요한 파일에 액세스하는 것입니다. 따라서 하나의 파일을 재생하는 데 55 초 이상 걸립니다. 오디오 파일 재생에 소요되는 시간을 줄이기위한 솔루션이 필요합니다. 너무 많은 시간을 소비하기 때문이 아니라 파일을 다시 압축을 해제 할두 개의 폴더로 분리 된 100k 오디오 파일 모음에서 단일 오디오 파일을 재생하는 방법은 무엇입니까?
long lStartTime = System.currentTimeMillis();
System.out.println("Time started");
String filePath = File.separator+"sdcard"+File.separator+"Android"+File.separator+"obb"+File.separator+"com.mobifusion.android.ldoce5"+File.separator+"main.9.com.mobifusion.android.ldoce5.zip";
FileInputStream fis = new FileInputStream(filePath);
ZipInputStream zis = new ZipInputStream(fis);
String zipFileName = "media"+File.separator+"aus"+File.separator+fileName;
String usMediaPath = "media"+File.separator+"auk"+File.separator;
ZipEntry entry;
int UnzipCounter = 0;
while((entry = zis.getNextEntry())!=null){
UnzipCounter++;
System.out.println(UnzipCounter);
if(entry.getName().endsWith(zipFileName)){
File Mytemp = File.createTempFile("TCL", "mp3", getActivity().getCacheDir());
Mytemp.deleteOnExit();
FileOutputStream fos = new FileOutputStream(Mytemp);
for (int c = zis.read(); c!=-1; c= zis.read()){
fos.write(c);
}
if(fos!=null){
mediaPlayer = new MediaPlayer();
}
fos.close();
FileInputStream MyFile = new FileInputStream(Mytemp);
mediaPlayer.setDataSource(MyFile.getFD());
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(this);
long lEndTime = System.currentTimeMillis();
long difference = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference);
mediaPlayer.setOnErrorListener(this);
}
zis.closeEntry();
}
zis.close();
FYKI, 우리는 파일을 압축 해제하지 않습니다. 그것은 zip 파일이며 zip 파일 내의 오디오 파일에 직접 액세스합니다. –
@MahalakshmiSaravanan 나는 그것이 내 두뇌에 미끄러 져서 정말 유감이다. Zip 파일을 반복하는 데 잘못된 방법을 사용할 수 있기 때문일 수 있습니다. 이것은 도움이 될 수 있습니다 : [zip 파일 레코드를 반복하는 방법] (http://java-performance.info/how-to-iterate-zip-file-records/) –
접근 방법을 따르면, 파일. 내 Zip 파일에 3 개의 폴더가 있는데 첫 번째 폴더의 파일은 시간 범위 내에서 액세스 할 수 있지만 두 번째 및 세 번째 폴더 파일은 파일을 검색하는 데 53 초 이상 걸립니다. 이 일에서 나를 도울 수 있니? –