파일리스트 구현 자료구조

icabord의 이미지

안녕하세요. 이곳에 질문은 처음하게 되네요.

제가 하고싶은 질문은
임베디드의 경우 mp3나 pmp, 프로그램의 경우에도
해당 파일에 대한 나열로 파일리스트를 보여주게 됩니다.

지금 제가 하고 있는 방식은 임베디드의 경우인데,
opendir 을 사용하여 장비의 저장 장치(flash 혹은 HDD)에 있는
폴더의 정보(해당 폴더에 있는 파일들의 이름) 중 파일의 이름을 가져와서

double linked list로 구현하는 방식을 사용하고 있습니다.

딱히 특별한 알고리즘을 배운 것이 아니라서 이 방법을 쓰고는 있는데,
혹 파일의 관리 등에 쓰이면 효과적인 알고리즘에 대해서 아시는 분 있으면
답변 바랍니다.
간단히 어떤 알고리즘이다 라고 이름을 적어주셔도 좋고, 예제를 보여주시면
더더욱 고맙겠습니다.
그럼 좋은 하루되세요.

coremaker의 이미지

B+ Tree 를 사용하고..
Sparse or Dense Index 를 활용해보는건 어떨까요?

일단 각 파일과 폴더에 대한 정보를 B+ Tree와 그안에 있는 순차정렬 정보를 가지고 유지하고..
MP3의 작곡가, 장르, 음질 등으로 index를 추가 구성해서.. 손쉽게 접근할 수 있도록 하는 것이죠..

구축비용은 좀 많이 들겠지만..
일단 구축 되면 유지비용이나 search 하는 것에 효과가 있지 않을까 싶은 생각이..
살짝...

다만 제가 해보지 않았으므로 .. idea 정도로 생각해주세요...

sonumb의 이미지

일단은 화일처리관련 책을 보시는게 제일 좋겠네요.
화일처리에서 제일 중요한 것은 저장매체의 특성입니다.
그런 특성에 따라 어떠한 알고리즘이 효율적이다라는 것이 나오는 거거든요. :)
그리고 대부분의 섹터 기반 스토리지에는 B-tree 계열이 좋은 걸로 나옵니다.
파일의 양이 크지 않고, 빠르게 검색할 필요성이 있다면 일반적인 바이너리트리로
구현하는게 좋다고 보구요.
자기가 어떤걸 목표로하는 것에 따라 효율적인게 따로 있으니 일단은 화일처리나 자료구조 관련 책을 보시는게 현명할 선택이라 사료됩니다. :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.