toggle menu

ASSET 폴더에 있는 900KB 파일 합치기

2012. 8. 24. 00:08 Android

실제 내가 개발한 어플에 사용된 코드이다.
원래 인터넷 상에 돌아다니던 코드를, 보다 간결하고 명확하게 바로잡았다.
AssetManager assetManager = null;
InputStream[] inputStream = new InputStream[7]; //7개로 분할된 원본 파일
BufferedInputStream[] bufferedInputStream = new BufferedInputStream[7]; //7개로 분할된 원본 파일
	
BufferedOutputStream bufferedOutputStream = null;
	
try
{
	//폴더 생성. 이미 존재하는 경우 알아서 무시됨.
	new File("/testFolder").mkdir();
	
	
	//첫 번째 파일 출력 스트림 설정
	bufferedOutputStream
		= new BufferedOutputStream(new FileOutputStream(new File("/testFolder/testFile1")));

	//AssetManager에서 파일을 가져온다.
	assetManager = Main.getResources().getAssets();

	int read = -1;
	byte[] buffer = new byte[1024];

	for(int i = 0; i < inputStream.length; i++)
	{
		inputStream[i] = assetManager.open("krv.00" + (i + 1)); //분할된 krv.001 ~ krv.007
		bufferedInputStream[i] = new BufferedInputStream(inputStream[i]);
		
		while((read = bufferedInputStream[i].read(buffer, 0, 1024)) != -1)
		{
			bufferedOutputStream.write(buffer, 0, read);
		}
			
		bufferedOutputStream.flush();
	}

	
	//두 번째 파일 출력 스트림 설정
	bufferedOutputStream
		= new BufferedOutputStream(new FileOutputStream(new File("/testFolder/testFile2")));
	
	for(int i = 0; i < inputStream.length; i++)
	{
		inputStream[i] = assetManager.open("kjv.00" + (i + 1)); //분할된 kjv.001 ~ kjv.007
		bufferedInputStream[i] = new BufferedInputStream(inputStream[i]);
		
		while((read = bufferedInputStream[i].read(buffer, 0, 1024)) != -1)
		{
			bufferedOutputStream.write(buffer, 0, read);
		}
			
		bufferedOutputStream.flush();
	}
}
catch(Exception e)
{
	Toast.makeText(this, "error!!!", Toast.LENGTH_SHORT).show();
}
finally
{
	for(int i = 0; i < inputStream.length; i++)
	{
		try{if(inputStream[i] != null) inputStream[i].close();}
		catch(Exception e){}
		try{if(bufferedInputStream[i] != null) bufferedInputStream[i].close();}
		catch(Exception e){}
	}
		
	try{if(bufferedOutputStream != null) bufferedOutputStream.close();}
	catch(Exception e){}

	inputStream = null;
	bufferedInputStream = null;
}

Android 관련 포스팅 더보기