336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

자바에서 파일을 생성하고 관리할때, 임시파일을 생성하고 해당 프로세스가 종료되면 삭제되도록 하는 방법이 있다. 


이 기능을 제공하는 메소드는 File.createTempFile() 와 File.deleteOnExit() 이다. 


import java.io.File;
import java.io.IOException;


public class Main {

	public static void main(String[] args) {
        try{
        	// test_xxxxxxxxx.tmp 라는 임시파일을 생성한다. 
            File tempfile = File.createTempFile("test_", ".tmp", new File("D:\\temp"));
            
            // 생성된 파일의 경로를 system.out 에 출력한다.
            System.out.println(tempfile.getAbsolutePath());
            
            // 생성된 파일은 해당 프로세스가 종료될 때 지운다. 
            tempfile.deleteOnExit();
            
            // 5초 동안 멈춘다.
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        	e.printStackTrace();
        } catch (IOException e) {
        	e.printStackTrace();
        }
	}
}


위의 코드를 실행하면 아래와 같이 파일이 생성되고 프로세스가 종료될 때 파일은 삭제된다. 



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안드로이드에서 리소스(Resource)는 /res 폴더에 xml 파일로 정의하고 코드 상에서 R 클래스를 통해서 호출하여 사용한다. 


  • res/strings.xml 에 hello_world라는 리소스 이름을 정의
  • 
    
    	HELLO WORLD
    
    

  • src/MainActivity.java 에서 R 클래스에 정의된 리소스 ID를 사용
  • protected void onCreate(Bundle savedInstanceState) { String msg = getResources().getString(R.string.app_description); // 또는 String msg = getString(R.string.app_description); }


위와같이 안드로이드에서 기본적으로 제공하는 방법외에 리소스 이름 (문자열)을 가지고 리소스 ID 직접 구할 수 있다. 

  • src/MainActivity.java 에서 리소스 이름(문자열)을 이용한 리소스 ID 구하여 사용
  • protected void onCreate(Bundle savedInstanceState) {
    	String resName = "hello_world";
    	String type = "string";
    	String packageName = getPackageName();
    
    	int resId = getResources().getIdentifier(resName, type, packageName);
    
    	String msg = getResources().getString(resId);
    }
    


getIdentifier 메소드의 인자 값들은 name, type, packageName 이며, 이 값들은 아래와 같다. 

  • name 은 R.type.name에서 name 부분을 말한다. 
  • type 은 R.type.name 에서 type 부분을 말한다. 
  • packageName 은 context 객체에서 getPackageName() 메소드로 획득한 패키지명을 말한다. 


이 같은 코드는 주로 리소스 이름을 조합하여 리소스 ID 값을 획득하여 사용할 때 사용된다. 


예를 들어, 연속되는 ImageView 를 img_view_1, img_view_2, img_view_3, img_view_4 로 정의하고 ImageView에 보여질 이미지 리소스를 img_1, img_2, img_3, img_4 로 정의한다면 다음과 같이 코드를 구현할 수 있다. 

private void init() {
	int resId;
	String packageName = getPackageName();

	for (int i = 0 ; i < 4 ; i++) {
		int resId = getResources().getIdentifier("img_"+i, "drawable", packageName);
		int viewId = getResources().getIdentifier("img_view_"+i, "id", packageName);
		(findViewById(viewId)).setImageResource(resId);
	}
}