본문 바로가기

분류 전체보기100

파일 선택기 만들기4 오늘은 특정 디렉터리 안에 포함된 항목들을 표시할 때 파일의 수정 날짜 및 파일 크기 등의 정보를 함께 표시해 주는 기능을 만들어 보려고 한다. 그런데 원하는 형태로 항목을 표시해 주는 기능을 FileSelector 클래스 안에 직접 구현하지 말고, 해당 기능을 전담으로 담당할 객체에게 작업을 맡기도록 프로그램을 작성해 보자. 현재 FileSelector 클래스에서 디렉터리의 항목을 표시해 주는 역할은 print_list 메서드가 하고 있는데, 이 기능 전체를 다른 객체에게 위임하기 보다는 기본 형식과 정보는 print_list 메서드가 제공하고 항목에 대한 추가적인 정보을 얻는 것만 다른 객체에게 위임하는 것이 좋을 것 같다. 그러면 먼저 아래 코드처럼 FileSelector 클래스의 코드를 변경해 보.. 2024. 11. 5.
파일 선택기 만들기3 오늘은 지난 글의 마지막에 얘기했던 세 가지 기능을 하나씩 추가해 보도록 하자. 우선 지난 시간에 만들었던 최종 코드를 아래처럼 조금 수정하였다. 기존 코드에서는 사용자가 디렉터리를 선택했을 때 @dir 인스턴스 변수를 직접 변경을 했었다. 그래서 동일한 FileSelector 객체에 대해 select 메서드를 다시 호출하면 직전 select 메서드 호출에서 사용자가 최종 선택한 디렉터리의 경로부터 시작을 한다. 어떤 면에서는 이게 좋을지도 모르겠지만, 나는 select 메서드를 여러 번 다시 호출해도 객체 생성 시 전달한 경로부터 시작하도록 코드를 조금 수정했다. 아래 select 메서드의 코드를 보면 시작 부분에서 dir 변수에 @dir 인스턴스의 값을 할당하여 이후 코드에서 dir 변수를 사용하도록.. 2024. 11. 4.
파일 선택기 만들기2 오늘은 지난 글에 이어서 항목 중 디렉터리가 포함되어 있을 경우 그 디렉터리 안의 항목들도 확인할 수 있도록 하위 디렉터리를 탐색하는 기능과 실제 사용자가 원하는 파일을 선택할 수 있는 기능을 함께 만들어 보자. 아래 코드는 지난 글에서 만든 최종 코드인데 여기서부터 다시 시작해 보자.class FileSelector def initialize(dir = Dir.pwd) @dir = File.expand_path(dir) end def list Dir.chdir(@dir) files = Dir.glob("*") width = files.size.to_s.length files.each_with_index do |f, i| no = (i + 1).to_s.r.. 2024. 11. 1.
파일 선택기 만들기1 오늘은 프로그램에서 특정 파일을 선택해야 할 때 사용할 수 있는 파일 선택기를 만들어 보려고 한다. 우리가 사용하는 많은 응용 프로그램들에서 프로그램 안으로 로드할 파일을 선택하게 하거나 아니면 현재 작성한 내용을 저장할 파일 위치를 선택하게 할 때 파일 선택기를 많이 사용한다. 이 파일 선택기 프로그램을 만들어 보면서 루비에서 파일 탐색은 어떻게 하는지 살펴보도록 하자. 프로그램을 작성하기에 앞서 현재 작업 디렉터리의 경로를 확인하는 방법, 특정 경로 상의 파일과 디렉터리 목록을 가져오는 방법, 현재의 작업 디렉터리를 다른 디렉터리로 변경하는 방법, 그리고 상대 경로를 절대 경로로 변경하는 방법 등을 알아보자. 작업 디렉터리는 프로그램이 현재 실행되는 경로를 의미한다. 이 글에서 '디렉터리'와 '폴더'.. 2024. 10. 30.