プログラミングクラスの後輩向けにファイルの講義を準備中です。私が詳しく説明したいポイントの 1 つは、ファイルに関する優れた実践です。
プログラミング言語でファイルを使用する際に留意すべきことは何ですか?
ファイルには、それぞれが固定長であるか、区切り文字で終わるレコードのセットが含まれていると見なすことができます。
ファイルは通常、ランダムアクセスではなく、シーケンシャルアクセス用に最適化されています。ファイルの途中にデータを挿入するのは難しく、通常、ランダムに(「シャッフル」モードのCDのように)ファイルを線形に(カセットテープのように)処理するよりも高速です。
ランダムアクセスファイルには通常、固定長のレコードが含まれ、そのほとんどには空のスペースが含まれているため、シーケンシャルアクセスファイルよりも大きくなります。
ファイルは気質的で予測不可能な生き物です。長さの変更、非表示、アクセス許可の変更などが可能です。アクセスの合間には、操作を注意深く検証し、リターンコードを確認してください。
最初から読み取り(テール)、最後に書き込む(ヘッド)場合、ファイルをバッファーとして使用できます。
バッファをフラッシュしてください!
まだ誰もそれを言うのが苦手ではなかったので、これはあなたの学生に主題のハンドルを与えるはずです。
常にスクラッチモンキーをマウントします。
私は、ジュニア プログラマーの多くが直感に欠けているか、ファイルへのアクセス速度について誤った教訓を学んでいることに気付きました。
非常に新しいプログラマは、ファイルが非常に高速であり、バッファリングされていないファイルから一度に 1 バイトずつ読み取ることがなぜ悪い考えなのかを理解する助けが必要であると想定しています。同様に、ディレクトリ情報へのアクセスは非常に遅くなる可能性があるため、可能であればキャッシュする必要があります。
残念ながら、一部の経験豊富なプログラマーは間違った教訓を学び、すべてを常に RAM にキャッシュする必要があるか、遅すぎると思い込んでいます。最新のオペレーティング システムには非常に高度なディスク キャッシュがあるため、ファイルの同じ部分に 2 回目にアクセスすると、大幅に高速になる場合があります。
最後に、対話型プログラムはすべてのファイル操作を別のスレッドで実行する必要があります。これにより、ディスクがビジー状態のときやリモート ボリュームが一時的に利用できないときに、アプリケーションのクロールが遅くなったり、動作が停止したりすることがなくなります。
サーバー側または同時実行コードを記述している場合は、ファイルロックに細心の注意を払ってください。少なすぎるとデータが破損し、多すぎるとアプリがデッドロックします。
他の入力と同様に、ファイルはセキュリティリスクを高める可能性があります。さらに、古いアプリケーションによって作成されたか、エンドユーザーが自分で変更しようとしたために、形式が正しくない可能性があります。
そのようなファイルを完全に無視するか、できるだけ多くを取得して残りを破棄します。
終了したら、必ずファイルを閉じて、すべてのリソースを破棄してください。
バイナリファイルで読み取りバイナリを使用し、テキストファイルで読み取りを使用します。(テキスト構造のバイナリファイルを読み取っていて、ファイルの中央に^ Zが含まれているために、コードがファイル全体を読み取れなかった人を支援した回数を思い出せません)。
行う:
しないでください:
Vista のプログラム ディレクトリには新しいアクセス許可が含まれているため、ファイルを作成するプログラムを Vista にインストールすると問題が発生する可能性があります (修正は簡単ですが、面倒です)。
使い終わったら忘れずに閉じてください。