2009-09-19 3 views

答えて

12

テキストファイルだけで、他のファイルと改行文字のようなものはこれだけ通常のファイルサイズの制限が

(古いファイルシステム上で4GBのサイズ制限、ファイルはディスクなどに収まらなければなりません)適用、任意のパーソナルプラグインの文字のようなものですあなたが一行ずつ読むのでなければ、読んだり書いたりしても何の問題も起こりません。メモリが足りなくなったり、バッファオーバーフローが発生することがあります。これは、OSカーネルと異なり、行区切りの問題では、テキストエディタやテキスト処理プログラム(sedやawkなど)で発生する可能性があります。

私は読書がより自然であり、外部プログラムでファイルを処理するとエラーが発生しにくくなります。

+0

少なくともkwriteとviは行サイズの影響を受けます(4Mb単線XMLファイルでテスト済み) –

+0

確かに限界があります。それはディスクに収まる必要があり、行単位で読むとメモリに収まる必要があります。それに加えて、4Gbを超えるファイルを処理するには、大きなファイルサポートが必要な場合があります。 –

+0

@brian d foy:あなたがここで経験豊富なので、私はあなたの助言に従い、Obviousキャプテンを演じているので、私の投稿では、ディスク上のファイルがそのディスクのサイズを超えてはならないと言っています。一口。 –

3

ファイルシステムのサイズが2TBかそれ以外のものであることを除いてサイズ制限はありません。

2

いいえ、ファイルサイズの制限を超えるまで、このような制限はありません。

1

いくつかの古いUnixシステムでは、いくつかのテキストユーティリティ(結合、並べ替え、古いawkなど)には最大行サイズに制限があります。私はこれがユーティリティの限界だと思いますが、OSはそうではないと思います。 GNUユーティリティは私が知る限りではこのような制限はないので、Linuxにはこの問題はありません。

+0

IRIXとAIXの古いバージョンでこの問題が発生しました。私はホームディレクトリにGNU textutils(coreutilsにマージされていない)をインストールしました。問題を解決しました。 – user172818

-1

ファイルサイズは、お使いのOSのファイルシステムによって異なります。ツールにはそのような制限はありません(またはこれまで見たことがない)

+0

いくつかのツールは、4バイトのintアドレス空間を使用しているため制限があります。 –

3

唯一気にする必要があるのは、作成できるファイルのサイズとファイルのサイズです読める。

コンピュータは、ファイルのバイトの解釈である行について何も知らない。行の終わりを区切る一連の文字があると判断し、そのシーケンスに当たるまでファイルからファイルを取り出すようにプログラムに指示します。私たちにとって、それは一種の線です。

は、たとえば、あなたがカンマで終了するテキストファイルの行を定義することができます。私たちは慣れているので、私は__DATA__の下で、単一のラインを持っているように見えるにもかかわらず

$/ = ','; 

while(<DATA>) 
    { 
    chomp; 
    print "Line is: $_\n"; 
    } 

__DATA__ 
a,b,c,d,e,f,g 

、それだけです本。コンピュータは本を読まない。

Line is: a 
Line is: b 
Line is: c 
Line is: d 
Line is: e 
Line is: f 
Line is: g 
2

は、私はちょうど長いKwrite中1M CHRSについてのラインでこのような問題に出くわした:代わりに、このプログラムは、コンマの間にすべてがラインであると考えています。

理論上の制限はありませんが、ファイルを作成する場合は、幅を表示するように折り返す必要があります。編集ごとに、スワップメモリ​​を含む多くの計算が実行されます。 Tharは編集がぎこちない。長い行はかなり不便かもしれません。

関連する問題