WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:サイズを指定してファイルを作る

0:[投稿] カケダシ [2002/04/29 15:57 ][環境:WIN+IE WIN系+Perl]

ご好意ありがとう御座います、カケダシです。
CGIでファイルを作る時にファイルサイズを指定してファイルを作ることは可能ですか?
例えば1MBちょうどのファイル(テキストでも何でも問わず)を作のは可能でしょうか?
どなたか返答を宜しくお願いします。


1:[回答] やじうま1号 [2002/04/29 17:54 ]

ファイルサイズはいくらそのファイルの中に内容があるかですから、(CGIとはPerlを意味していると思うので)
open(MB,">1mb.txt");
print MB "1" x (1000 ** 2); #-- 1MBは1,000,000Byteだとして
close(MB);

でよかろうと思います。


2:[回答] ヨシミ [2002/04/30 09:44 ]

1MB は 1,048,576Byte かと。


3:[回答] ふじ [URL] [2002/04/30 13:25 ]

> print MB "1" x (1000 ** 2);
これをやると、Perlは実際に1000*1000バイトの文字列を生成してから
ファイルに書きだします。
1MBぐらいなら大丈夫ですが、100MBとか1GBとかをこの手でやると
メモリを食いつくして大変なことになるのでご注意を。

ファイルの中身が何でもいいなら、

open MB, "> 1mb.txt";
seek MB, 1024 * 1024 - 1, 0;
print MB "\n";
close MB;

とか。


4:[関連] やじうま1号 [2002/04/30 16:55 ]

>>2
いくつで位上げか忘れてしまったもので(汗)

>>3
それに1だらけになってしまいますしね(大汗)。


5:[完了] カケダシ [2002/05/01 08:46 ]

返答が遅れてしまいすみませんでした、カケダシです。
サイズ指定してファイルの作成方法を教えていただき有難う御座います。
ただ注意としてメモリを使ってしまい大変なことになるとのことなので、
きちんとその辺を考えて参考にさせていただきます。
ちなみにやじうま1号さんの
「print MB "1" x (1000 ** 2); #-- 1MBは1,000,000Byteだとして」の部分で
「x」という表現がありますが「*」とは意味合いが違うのでしょうか?
(ちょっと気になったので無視しても構いません。)
やじうま1号さん、ふじさん、ヨシミさん、参考になる返答有難う御座いました。
再度返答が遅れたことを謝ります。


6:[回答] B-Cus [2002/05/01 08:46 ]

>>3
> seek MB, 1024 * 1024 - 1, 0;
> print MB "\n";

これだと穴あきファイルになってしまうので、用途によっては
ご注意を、ということで。


7:[回答] やじうま1号 [2002/05/01 16:46 ]

>>5
"x"というのは、文字列を繰り返すという意味のものです。
1 * (1000 ** 2)
だったら1 * 1000000と等価ですので、1000000です。


8:[回答] B-Cus [2002/05/02 01:43 ]

> これだと穴あきファイルになってしまうので、

よく見たらサーバは Windows ですか。


ふと疑問に思ったのですが、こういう書き方をすると Windows でも
穴あきファイルになってしまうんですかね?

# どのバージョンからかは知りませんが、Windows にも
# 穴あきファイルと似たような機能が導入されたと聞いた
# ことがあるようなないような。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World