파일 병합후 해체할때 질문드려요

bestgodyou의 이미지

프로그래밍을 이제 막 공부하고있는 신입입니다.
MFC로 일반 파일들을 하나의 파일로 합쳤다가 다시 나누는 것을 만들어보려고 하는데요
(압축기능은 없어도 됩니다.) 많이 막히다보니 소스코드를 따로 올릴게 없네요..
단순히 파일을 하나로 합치는것은 새로 파일을 만들어서 그 뒤로 데이터들을 붙여버리면 되는거 같긴한데
합쳐진 하나의 파일을 다시 원상복귀하려면 그전에 있던 원본파일들의 파일이름과 크기를 합쳐진 파일에
헤더부분을 만들어서 저장하고 뒤로 데이터를 붙여야 할거같은데...
파일안에 헤더부분을 만들고 불러오려면 어떤식으로 구현해야할지...그저 막막하네요...

- 병합파일.txt -
([파일1 이름][파일1 크기][파일2 이름][파일2 크기][파일3 이름][파일3 크기])..... +
([파일1 데이터][파일2 데이터][파일3 데이터]).....

이렇게 병합을 하고나서 해제 할때는 헤더부분만 읽어서 원하는 파일의 파일 이름이랑
크기로 데이터부분의 시작포인터로 찾아가 파일크기만큼 잘라와서 저장하면 복구가 될거같은데...

이처럼 병합파일안에 헤더부분을 만드는 부분이 막막합니다...
질문이 너무 기초부분이라 죄송합니다.

익명 사용자의 이미지

딱 생각나는게 타르볼이군요 ㅎㅎ

가장 훌륭하고 정답인거 같은데 아닌가요?

익명 사용자의 이미지

앞에 파일 갯수를 명시하고 일정한 길이 사이즈의 배열처럼 헤더를 표시하는 방법 - 배열방식
일정한 길이 사이즈의 배열 뒤에 끝을 나타내는 표시를 넣어서 헤더를 끝맺음 하는 방법 - 리스트방식
일정한 용량(즉, 일정한 갯수)을 헤더로 지정해서 그 한도내에서는 마음껏 병합하게 하는 방법 - 물리디스크방식
기타 등등 여러가지가 있지만 맘껏 상상해보세요.

bestgodyou의 이미지

배열이나 리스트방식 등으로 헤더를 쓰고 데이터를 저장한다는 부분이...생성된 파일을 txt로도 열어서
내용을 확인할 수 있는건가요??
예를들어 file1.txt[size:3,data:111],file2.txt[size:3,data:222] 이 두 파일을 합쳐서 메모장으로 본다면
Hapfile.txt 안에는 [헤더정보+data:111222]만 들어가있는것인지...

그리고 이와같은 여러 합친 임의의 파일들을 FileOpen 했을때 이 합친 파일안에 어떤 파일들이
들어가있는지 헤더부분만 확인한다는게 파일이름,크기,데이터 각 사이사이 특수문자들을 넣어서
한줄씩 읽다가 해당 특수문자가 나왔을때를 기준으로 잘라서 정보들을 가져와야 하는것인지...
아니면 일반적인 FileOpen해서 한줄씩 읽어오는게 아닌것인지...

아...제가 생각해도 너무 정리가 안된 질문이라...ㅠㅠ죄송합니다...

익명 사용자의 이미지

위에도 써놨듯이 소스보면 가장 훌륭한 답인데 =_=

설명하자면요

C로 보자면 구조체를 하나 만드시구요

구조체 + 파일1내용 + 구조체 + 파일2내용 구조체 + 파일3내용

이렇게 간단하게 생각해 볼 수 있구요

구조체는 사이즈가 고정사이즈이니 구조체가 20바이트면 20바이트 읽고

그다음 구조체 정보를 토대로 그 다음 파일 내용 사이즈만큼 읽어 들이면 되는겁니다.

그리고 다시 다음 구조체를 읽어서 또 그다음 파일을 읽어서 분리하구요

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.