0

WindowsのFATMicroSDで大きなファイルを作成する最も簡単な方法は何ですか?これまでのすべてのソリューションは、スパースファイルになるメソッドを示してきましたが、すべてのセクターを事前に割り当てる必要があります(データロガーによって使用されるため)。現在、数ギガバイトのゼロを書き込むだけですが、時間がかかります。

編集:FAT仕様に準拠するには、FATが行う「クラスターチェーン」のために、Windowsはすべてのデータブロックを割り当て、それらをゼロ初期化する必要があるようです。ですから、不可能を求めていると思いますが、念のため質問は開いたままにしておきます。

4

4 に答える 4

1

アレックスは、実行時間の点で最速の方法であると言っていますが、FAT に書き込むことは簡単ではありません。私の理解では、セクターサイズと断片化に対処する必要があります。これはオープン ソースの FAT32 実装であり、LGTM.

記述する必要があるコードをどれだけ少なくするかという点で最速の方法は、この Raymond Chen ブログ投稿 のオプション 1です。

要するに :

  1. ファイルを作成する
  2. シークして終了
  3. 1 バイトを書き込む

おまけ:NTFSでも動作します(私が取り組んでいるアプリケーションの1つで使用しています)。

于 2012-05-30T14:33:47.540 に答える
0

fsutilを試すと便利かもしれません:

fsutil file [createnew] (ファイル名) (長さ)

于 2015-12-02T09:33:04.133 に答える
0

( CreateFileを使用して) ファイルを作成し、後でSetEndOfFileを使用してファイルのサイズを設定できるはずです。ただし、Windows がセクターをゼロ初期化するかどうかはわかりません。私の記憶が正しければ、Windows XP の FAT32 パーティションにはありませんでした。

于 2012-05-30T15:52:45.493 に答える
0

最も速いのは、FAT 制御データを含むセクターに直接アクセスし、十分な長さのクラスター チェーンを割り当て、ファイルのディレクトリ エントリを作成し、チェーンの最初のクラスターを指すようにすることです。これにより、ギガバイト単位のゼロの書き込みが回避されます。事前にフォーマットされた空のメディアから始めて、以前に書き込まれたデータを保持する必要がない場合、これは簡単な作業です。制御データ領域の内容をハードコードするだけで、FAT の解析を回避できます。

Windowsでこのような低レベル/生のアクセスをどのように取得できるか正確には覚えていません。デバイス ボリューム (または物理デバイス) を開くだけで、生データとしてアクセスできるようになると思います。詳細については、MSDNのCreateFile()の説明を参照してください。Vista 以降では、アプリに特別なアクセス権が必要になる場合があります。

于 2012-05-30T11:35:56.457 に答える