C++ 파일 생성시 크기 지정 가능한가요?

kknd345의 이미지

파일을 처음에 생성을 할 때 크기 지정 하는 방법 있나요?
안에 내용은 없어도 200kbyte 짜리 파일을 만들고 싶은데 방법 없을까요?

그리고 지금 파일을 하나 불러오는데 만약 파일이 없으면 생성하도록 하는 것인데
fstream _FILE;

_FILE.open( fileName, ios::nocreate | ios::in | ios::out );

// 파일의 첫 생성 //
if(!_FILE) {
_FILE.open( fileName, ios::in | ios::out | ios::trunc);
// 오류 처리
}


이 코드 괜찮은가요? 더 좋은 방법 없나요?

singlet의 이미지

내용이 없다면 무엇이 200kB 인 건가요? 그리고 크기를 지정하는 이유는 뭔가요?

ps. 시스템 라이브러리를 만들고 계시는 게 아니라면 앞에 밑줄 붙는 이름(ex. _FILE)은 피하세요. 시스템 전용입니다.

kknd345의 이미지

충고 고맙습니다 ^^

다른게 아니라 지금 파일 시스템을 배우고 있는 학생입니다.

특정 Record를 저장할 데이터 파일을 만들려고 하는데

디스크 블럭 단위로 Access 하려면 연속된 공간이 미리 구성되 있어야 되는거 아닌가요?

아니면 OS에서 자동으로 디스크 블럭 단위를 보장해 주나요?

아직 배우는 중이라... 제 생각과 다른게 많아서 ㅜㅜ;;;

======================
1%의 가능성이면 충분하다!
최선을 다하자!

1%의 가능성이면 충분하다!
최선을 다하자!

Necromancer의 이미지

처음 만들때 파일크기는 0입니다.
만들고 싶다면 200kbyte size가 되도록 fwrite()하시면 됩니다.

그리고 파일이 디스크 여러 군데에 있더라도
파일 내의 블럭 순서는 일정하게 유지 됩니다.
이 역할을 하는 것이 os의 파일시스템입니다.

Written By the Black Knight of Destruction

mg2000의 이미지

네트워크에서 파일을 주고 받을 경우 파일 크기 만큼 받는 쪽에서 미리 파일을 생성해 두고 데이터를 받아서 저장하고 싶은데요.

윈도우에서는 특정 크기의 파일을 생성하는 API를 제공해주는 것으로 알고 있는데,

ANSI 함수나 유닉스 함수에는 이런 함수가 없는지...

fwrite를 쓰는 방법은 비효율적인 것 같기도 하고 말이죠. (특히 파일 크기가 클 경우)

tj의 이미지

man 2 fallocate
man 2 posix_fallocate

octaphial의 이미지

man 2 truncate

댓글 달기

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