FileStreamを用いたCP/CAPコマンド
|
95 |
FileStreamCPCAP |
動作確認 |
Delphi2007 |
更新日 |
2010/06/23(水) |
コマンドラインから使えるファイルアクセスプログラムを書いてみました。
作成するときは
[新規作成]-[コンソールアプリケーション]を選択してdprファイルを編集するか
[プロジェクト]-[オプション]-[リンカ]
-[Exe/DLLオプション]-[コンソールアプリケーション]にCheckをいれておきましょう。
CPコマンドは、ファイルコピーコマンド
CAPコマンドは、画面出力コマンドです。
◆UNIXのコピーコマンドCPと同じDCP.exe
コマンドラインから
C:\>DCP File1.txt File2.txt
とするとFile1.txtの内容がFile2.txtにコピーされます。
───────(DCP.dpr)───────
program DCP;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
var
infs, outfs: TFileStream;
b: Byte;
begin
if (ParamCount=2) and (ParamStr(1)<>'') and (ParamStr(2)<>'') then
begin
infs := TFileStream.Create(ParamStr(1), fmOpenRead);
outfs:= TFileStream.Create(ParamStr(2), fmCreate);
while (infs.Read(b, SizeOf(Byte))=SizeOf(Byte)) do
outfs.Write(b, SizeOf(Byte));
{上記2行は以下のように1行で置き換えられる}
// outfs.CopyFrom(infs, infs.Size);
infs.Free;
outfs.Free;
end;
end.
────────────────────
◆UNIXのCATコマンドと同じDCAT.exe
コマンドラインから
C:\>DCAT File1.txt File2.txt File3.txt
とするとFile1/2/3.txtの内容を連続して画面に出力します。
C:\>DCAT File1.txt File2.txt File3.txt > File4.txt
とするとOSのリダイレクション(>のこと)機能により
File4.txtにFile1/2/3.txtの内容が結合して入ります。
StringListを使っているため
テキストファイルで使う時しか正しい動作はしないでしょう。
───────(DCAT.dpr)───────
program DCAT;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
var
infs: TFileStream;
SL: TStringList;
i, j: Integer;
begin
if (ParamCount>=1) then
begin
SL := TStringList.Create;
for j := 1 to ParamCount do
begin
infs := TFileStream.Create(ParamStr(j), fmOpenRead);
SL.LoadFromStream(infs);
for i := 0 to SL.Count-1 do
begin
Writeln(SL.Strings[i]);
end;
infs.Free;
end;
SL.Free;
end;
end.
────────────────────
FileStreamを使った理由は Insider.NET の記事を元にしているからです。
参考────────────────────
> Insider.NET > C#プログラミングTips > ファイル入出力の基礎
http://www.atmarkit.co.jp/fdotnet/csharptips/005file/005file.html
|