[C#] 지정된 폴더(Folder)에서 파일명(File Name) 목록(List) 얻기

C#에서 지정된 폴더에 담긴 파일명의 목록을 얻는 코드입니다.

String FolderName = tbFolder.Text;
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(FolderName);
foreach (System.IO.FileInfo File in di.GetFiles())
{
    if (File.Extension.ToLower().CompareTo(".xrv") == 0)
    {
        String FileNameOnly = File.Name.Substring(0, File.Name.Length - 4);
        String FullFileName = File.FullName;

        MessageBox.Show(FullFileName + " " + FileNameOnly);
    }
}

1번 코드에서 파일명 목록을 얻고자 하는 폴더명이 지정됩니다. 그리고 5번에서 확장자가 .xrv 인 파일만을 필터링합니다. 그리고 7번은 오직 파일명(경로와 확장자를 제외)만을 얻습니다. 끝으로 8번은 파일명의 전체 이름(경로와 확장자를 포함)을 얻습니다.

폴더 안의 서브 폴더를 처리하기 위해서는 DirectoryInfo의 GetDirectories 매서드를 사용하여 서브 폴더명의 리스트를 얻어와 처리하면 됩니다.

[Android] ViewFlipper에서 View의 전환에 대한 좌우 애니메이션

ViewFlipper을 사용해 여러 개의 뷰를 전환할 수 있는데요. 기본적으로 제공되는 안드로이드에서는 뷰의 전환이 왼쪽에서 오른쪽으로만 됩니다. 이는 안드로이드에서 제공하는 애니메이션 리소스가 왼쪽에서 오른쪽으로 전환되는 것만을 제공하기 때문입니다. 이 애니메이션 리소스는 android.R.anim.slide_in_left와 android.R.anim.slide_out_right입니다.

여기서 오른쪽에서 왼쪽으로 뷰의 전환이 이뤄지는 애니메이션을 위해서는 slide_in_right.xml와 slide_out_left.xml을 직접 추가하였고 해당 파일의 내용은 첨부 파일을 참고하시기 바랍니다.

실행 결과는 아래와 같습니다.

끝으로 전체 소스 코드를 다운로드 받을 수 있는 URL은 아래와 같습니다.

2014년의 반을 넘기는 마지막 달, 6월.

2014년도 벌써 6월로 접어 들었습니다. 지오서비스(GEOSERVICE)라는 이름으로 일을 하면서 다시금 지오서비스가 의미하는 바를 되짚어 봅니다.

지오+서비스. GIS를 위한 서비스 개발 및 제공, 서비스 개발을 위해 기반이 되는 솔루션을 개발하고 사용자에게 도움이 되는 서비스를 제공하며 이러한 개발과 제공 과정을 반복함으로써 수익을 창출하고 지속적으로 발전해 나간다. 이 발전의 해택은 회사의 주주 뿐만이 아니라 회사의 평직원까지도 돌아갈 수 있도록 배려한다.

지금 현재의 시점에서 지오서비스가 하고 있는 것은 기반이 되는 솔루션을 통해 서비스를 개발하고 있습니다. 앞으로 이 서비스가 고객의 업무에 많은 편의를 제공하여 큰 도움이 되기를 바랍니다.

갑작스럽게 이러한 글을 써봄으로써 내 스스로에게 상기해 보는 이유는 벌써 한해의 절반 가까이 지났다는 것과 요즘 내 스스로에 대한 위치와 자세 그리고 그 방향을 제대로 잡아가고자 하는 간절함에 있습니다.

부디 내 스스로에 대한 옳바른 방향을 잡아감에 있어 그 선택이 무엇이든지 최선을 다한다면 지오서비스의 목표를 이룰 수 있을 것이라고 조심스럽고 두려운 마음으로 말할 수 있을 것입니다. 현재(Present)는 선물(Present)입니다. 꿈을 이룰 수 있는 바로 그 선물입니다. 나는 이 꿈을 꼭 이룹니다.

[Android] 스레드에서 ProgressDialog 사용

ProgressDialog가 사용되는 경우는 대부분 시간이 많이 소요되는 연산을 스레드에서 실행할때 사용자에게 대기하도록 하는 용도입니다. 그러나 이 글의 제목에서 언급된 스레드는 ProgressDialog를 생성하고 표시(Show)하는 코드가 스레드에 위치하는 경우를 의미합니다.

블랙포인트라는 모바일 GIS 엔진에서 지도를 처음 그리기 시작할때 발생하는 이벤트와 지도가 모두 다 그려질때 발생하는 이벤트의 리스너는 각각 OnBeforeMapDrawEventListener와 OnUpdateMapCompletedEventListener입니다. 이 이벤트 리스너가 호출되는 위치가 바로 그리기 스레드(Rendering Thread)이므로 Handler를 사용하여 ProgressDialog를 생성하고 표시해줘야 합니다.

private static ProgressDialog progressDialog = null;

@Override
public void onBeforeMapDraw(BeforeMapDrawEvent event) {
    Message msg = new Message();
    msg.what = 0;
    msg.obj = event;
    handler.sendMessage(msg);
}
	
@Override
public void onUpdateMapCompleted(UpdateMapCompletedEvent event) {
    handler.sendEmptyMessage(1);
}
	
private static Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        if(msg.what == 0) {
            BeforeMapDrawEvent event = (BeforeMapDrawEvent)msg.obj;
            if(event.isCalledUpdateMethod()) {
                if(MainActivity.progressDialog == null)  {
                    MainActivity.progressDialog = ProgressDialog.show(
                        event.getMap().getContext(), "", 
                        Html.fromHtml(
                            "Please wait for map drawing ..."));
                    Window dlgWin = MainActivity.progressDialog.getWindow()
                    dlgWin.setGravity(Gravity.BOTTOM);
                }
            }				
        } else if(msg.what == 1) {
            if(MainActivity.progressDialog != null) { 
                MainActivity.progressDialog.hide();
                MainActivity.progressDialog = null;
            }				
        }
    }
};

스레드로부터 안전한 ProgressDialog를 표시하는 중요한 코드는 16번 코드부터입니다. 아래는 위의 코드가 적용되어 실제 실행되는 화면입니다.

사용자 삽입 이미지