1。ファイル切断/組み合わせの原則
ファイルカットは、ファイルをいくつかの小さなファイルにカットすることです。この方法は、「ファイルストリーム」の形式でファイルオブジェクトを読み取り、特定のブロックサイズに従ってファイルに保存することです。ファイルの組み合わせとは、複数のファイルを1つのファイルに結合することを意味します。たとえば、この原則はパッケージングツール(賢明)に使用されます。 「フロー」の概念に精通している場合、以下は簡単に実装できます。 2。実現します
Delphiで新しいプロジェクトを作成し、2つのボタン、1つの編集、1つのOpenDialog、1つのSavedialogをフォームに追加し、Button1のキャプションを「カット」に変更し、Button2のキャプションを「組み合わせ」に変更します(注:その他コントロール省略属性)。 Button1とButton2をダブルクリックして、次のコードを書き込みます。
//ファイルをカットします
手順tform1.button1click(sender:tobject);
var
私は、wantedfragsize、realtowrite:integer;
// 2つのファイルストリームオブジェクトを宣言します
//インストラムは入力ソースファイルストリームオブジェクトであり、アウトストリームは出力カットファイルストリームオブジェクトです
インストレーム、アウトストリーム:tfilestream;
S:文字列;
始める
opendialog1.executeの場合
始める
savedialog1.title:= '保存する切断ファイル名を入力します';
savedialog1.executeの場合
始める
wantedfragsize:= strtoint(edit1.text);
i:= 0;
//読み取り専用の方法で入力ファイルストリームオブジェクトを作成する
インストラム:= tfilestream.create(
opendialog1.filename、fmopenread);
試す
//インタームストリームの現在のポインター位置が最後にない場合は、データを読み取り、定義されたブロックサイズに従ってファイルに保存します//
while(instream.position <instream.size)はします
始める
s:= inttostr(i);
while length(s)<3 do s:= '0'+s;
s:= '。'+s;
//カットファイルの拡張機能を生成し、拡張機能として3桁を使用してファイルの組み合わせを容易にします
//インストラムの残りのブロックサイズが定義されたブロックサイズよりも小さい場合は、残りのブロック番号を保存します//データをファイルに保存します
If Instream.size -instream.position <wantedfragsize then
realtowrite:= instream.size -instream.position
それ以外
realtowrite:= wantedfragsize;
//出力ファイルストリームオブジェクトを作成します
アウトストリーム:= tfilestream.create(savedialog1.filename+s、fmcreate);
試す
outstream.copyfrom(instream、realtowrite);
Inc(i);
ついに
//出力ファイルストリームオブジェクトをリリースします
アウトストリーム。
終わり;
終わり;
ついに
instream.free;
終わり;
終わり;
終わり;
終了; //コンビネーションファイル
手順tform1.button2click(sender:tobject);
var
I:整数;
インストレーム、アウトストリーム:tfilestream;
SourcePath、Fragname、S:String;
始める
opendialog1.title:= 'cut file'を選択してください ';
opendialog1.executeの場合
始める
//現在開いているカットファイルへのパスを取得します
SourcePath:= extractfilepath(opendialog1.filename);
//現在開いているカットファイルのファイル名を取得します
fragname:= extractfilename(opendialog1.filename);
savedialog1.title:= '結合するファイル名を入力してください';
savedialog1.executeの場合
始める
i:= 0;
s:= inttostr(i);
while length(s)<3 do s:= '0'+s;
s:= '。'+s;
fragname:= changefileext(fragname、s);
//ディレクトリに拡張機能.000を備えたファイルがある場合、出力ファイルストリーム//オブジェクトを作成します
Fileexists(SourcePath+Fragname)の場合
始める
アウトストリーム:= tfilestream.create(savedialog1.filename、fmcreate);
試す
//ファイルをファイル拡張子と組み合わせます
Feeexists(SourcePath+Fragname)はそうします
始める
インストリーム:= tfilestream.create(sourcepath+fragname、fmopenread);
試す
//入力ファイルストリームのデータを出力ファイルストリームに書き込む
outstream.copyfrom(instream、0);
Inc(i);
s:= inttostr(i);
while length(s)<3 do s:= '0'+s;
s:= '。'+s;
fragname:= changefileext(fragname、s);
ついに
instream.free;
終わり;
終わり;
ついに
アウトストリーム。
終わり;
終わり;
終わり;
終わり;
終わり;
私たちが使用する多くの毎日のツールの中で、私たちが使用する多くの「ストリーム」オブジェクトがあり、それらの機能も非常に重要です。それをつかむことは非常に便利でより重要です。