AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] ファイル操作関連(5) 2014/07/10
 
前回の続きです。
前回は、System.IOUtils 内の TPath、TDirectory について記述しましたので今回は、TFile について見ていきます。
 
AppendAllText指定されたテキストをファイルに追加します。
AppendTextファイルを追加モードで開きます。
Copy指定されたパスにファイルをコピーします。
Create新しいファイルを作成し、そのファイルに関連付けられたストリームを返します。
CreateSymLinkCreateSymLink は、シンボリックリンクを作成します。
CreateText新しいテキスト ファイルを作成し、そのファイルに関連付けられたテキスト ライターを返します。
Decrypt指定されたパスにあるファイルの暗号解読を行います。
Delete指定されたパスにあるファイルを削除します。
Encrypt指定されたパスにあるファイルを暗号化します。
Exists指定されたファイルが存在するかどうかを確認します。
GetAttributesファイル属性を返します。
GetCreationTimeファイルの作成時刻を返します。
GetCreationTimeUtcファイルの UTC(協定世界時)タイムゾーンでの作成時刻を返します。
GetLastAccessTimeファイルの最終アクセス時刻を返します。
GetLastAccessTimeUtcファイルの UTC(協定世界時)タイムゾーンでの最終アクセス時刻を返します。
GetLastWriteTimeファイルの最終書き込み時刻を返します。
GetLastWriteTimeUtcファイルの UTC(協定世界時)タイムゾーンでの最終書き込み時刻を返します。
GetSymLinkTargetGetSymLinkTarget は、シンボリック リンク のコンテンツを読み取ります。
Move指定されたパスから別のパスにファイルを移動します。
Openファイルを開き、そのファイルに関連付けられたストリームを返します。
OpenReadファイルを読み取り用に開き、そのファイルに関連付けられたストリームを返します。
OpenTextテキスト ファイルを読み取り用に開き、そのファイルに関連付けられたストリームを返します。
OpenWriteファイルを書き込み用に開き、そのファイルに関連付けられたストリームを返します。
ReadAllBytesファイルの内容を読み取ってバイト配列に格納します。
ReadAllLinesテキスト ファイルの内容を読み取って文字列配列に格納します。
ReadAllTextテキスト ファイルの内容を文字列として返します。
Replaceファイルの内容を別のファイルの内容に置き換えます。
SetAttributesファイル属性を設定します。
SetCreationTimeファイルの作成時刻を変更します。
SetCreationTimeUtcファイルの作成時刻を変更します。
SetLastAccessTimeファイルの最終アクセス時刻を変更します。
SetLastAccessTimeUtcファイルの最終アクセス時刻を変更します。
SetLastWriteTimeファイルの最終書き込み時刻を変更します。
SetLastWriteTimeUtcファイルの最終書き込み時刻を変更します。
WriteAllBytesバイト配列をファイルに書き込みます。
WriteAllLines指定の文字列配列をファイルに書き込みます。
WriteAllText指定のテキストをファイルに書き込みます。
 
フォームにパネル、メモを配置し、パネル上にボタンを配置します。ボタンのクリックイベントハンドラで、テストコードを実行し、結果をメモ内容に記述させます。uses節に「System.IOUtils」を追加しておきます。
 
以下、ヘルプより。
AppendAllText
class procedure AppendAllText(
 const Path, Contents: string); overload; static;
class procedure AppendAllText(
 const Path, Contents: string;
 const Encoding: TEncoding); overload; static;
指定されたテキストをファイルに追加します。

AppendAllText を使用すると、指定したテキストをファイルに追加することができます。Path パラメータで指定したファイルが存在する場合には、テキストがそのファイルに追加され、存在しない場合には、ファイルが新しく作成されてテキストが格納されます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Pathファイルのパス。
Contents追加するテキストを含む文字列。
Encoding追加するテキストで使われているエンコード。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合には、AppendAllText は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
t := 'This is Test Program.' + #13 + #10 + 'これはテストプログラムです。' + #13 + #10 ;
TFile.AppendAllText(s,t);
のようにすると、実行プログラム(p440)と同じフォルダ内に、拡張子が「.txt」のファイル(p440.txt)を作成し、
This is Test Program.
これはテストプログラムです。
という内容を書き込みます。既に同じ名前のファイルがあれば、追記します。デフォルトは、UTF8エンコードのようです。UTF8エンコードのファイルに 例えば下記のように ANSI等で追記すると
TFile.AppendAllText(s,t,TEncoding.ANSI);
テキストエディタ等で見ると文字化けします。
This is Test Program.
これはテストプログラムです。
This is Test Program.
?????e?X?g?v???O????????B
Windows7・MacOSX ともに正常動作します(MacOSXでの改行コードは#10のみ、という話はありますが)。
 
AppendText
class function AppendText(const Path: string)
 : TStreamWriter; static;
ファイルを追加モードで開きます。

AppendText を使用すると、テキスト情報を含むファイルを追加モードで開くことができます。AppendText は、ファイルが存在すればそのファイルを開き、ファイルの末尾までシークします。存在しなければ、AppendText は新しいファイルを作成します。AppendText は、開いたファイルに関連付けられた TStreamWriter インスタンスを返します。TStreamWriter インスタンスを使い終わったら、忘れずに破棄してください。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path開く(または作成する)ファイルのパス。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合には、AppendText は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
st := TFile.AppendText(s);
st.WriteLine('ストリームライターで追記のテスト');
st.Close;
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を開き(無ければ作成し)、
ストリームライターで追記のテスト
という内容を追記します(改行付き)。UTF8エンコードのようです。
Windows7・MacOSX ともに正常動作します。
 
Copy
class procedure Copy(
 const SourceFileName, DestFileName: string);
 overload; inline; static;
class procedure Copy(
 const SourceFileName, DestFileName: string;
 const Overwrite: Boolean); overload; static;
指定されたパスにファイルをコピーします。

Copy を使用すると、ファイルのコピーを作成することができます。Copy の最初の形式は、コピー元とコピー先のパスだけを受け取ります。コピー先のパスが既に存在するファイルを指している場合、Copy は例外を発生させます。Copy の 2 番目の形式は、Overwrite パラメータ(省略可能)を受け取ります。このパラメータを true に設定すると、コピー先のファイルが既に存在する場合にもコピー操作はそのまま続けられます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
SourceFileNameコピー元のファイルのパス。
DestFileNameファイルをコピーする先のパス。
Overwrite別のファイルが DestFileName のパスに存在する場合でもコピー操作を続行するかどうかを指定します。
 
メモ: コピー元ファイルが存在しない場合、パスが無効な場合、コピー操作を行えるだけの権限をユーザーが持たない場合には、Copy は例外を発生させます。
s := ParamStr(0);
t := ChangeFileExt(s,'.BAK');
TFile.Copy(s,t);
のようにすると、実行プログラムと同じフォルダに、拡張子を「.BAK」と変えてファイルコピーを行います。2度目の実行時=コピー先ファイルが既に存在する場合は、「指定されたファイルは既に存在します」という例外が発生します。
TFile.Copy(s,t,False);
のようにすると上記同様、例外発生します。
TFile.Copy(s,t,True);
のようにすると例外発生せず、上書きコピーが行われます。
Windows7・MacOSX ともに正常動作します。
※ファイル名にワイルドカードは使用出来ません。
 
Create
class function Create(const Path: string)
 : TFileStream; overload; inline; static;
class function Create(const Path: string;
 const BufferSize: Integer)
 : TFileStream; overload; static;
新しいファイルを作成し、そのファイルに関連付けられたストリームを返します。

Create を使用すると、新しいファイルを作成して、TFileStream インスタンスを取得することができます。Create は、指定されたパスに新しいファイルを作成し、その後、そのファイルに関連する TFileStream インスタンスを作成します。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path作成されるファイルのパス。
BufferSizeファイル操作バッファのサイズ。
 
メモ: ファイルを作成できない場合やパスが無効な場合には、Create は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
st:= TFile.Create(s);
t := BytesOf('ストリームのテスト');
st.WriteData(t,Length(t));
st.Free ;
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を作成し、
ストリームのテスト
という内容を書き込みます。既に同じファイル名が存在する場合には、それを破棄します。
Windows7・MacOSX ともに正常動作します。
 
CreateSymLink
class function CreateSymLink(
 const Link, Target: string): Boolean; static;
CreateSymLink は、シンボリック リンクを作成します。

CreateSymLink メソッドは、シンボリック リンクを作成します。

このメソッドに必要なパラメータの一覧を以下の表に示します:
名前意味
Linkシンボリック リンクの名前。
Targetシンボリック リンクを入れる文字列。
 
メモ: リンク対象ファイルまたはディレクトリは、CreateSymLink の呼び出し時には存在していなければなりません。
メモ: CreateSymLink は、Windows Vista 以降の Windows 版でのみ使用できます。
s := ExtractFilePath(ParamStr(0)) + 'smlink' ;
t := ParamStr(0) ;
if (TFile.CreateSymLink(s,t)) then
 Memo1.Lines.Add('OK:'+s+' -- '+t)
else
 Memo1.Lines.Add('NG:'+s+' ・ '+t);
のようにしてコンパイル・実行しようとしているのですが、Windows7・MacOSX ともに、全く、正常動作されません。VCLアプリケーションも動作しません。DelphiXE3 内にはサンプルコードもありますが意味不明です。
 
CreateText
class function CreateText(const Path: string)
 : TStreamWriter; static;
新しいテキスト ファイルを作成し、そのファイルに関連付けられたテキスト ライターを返します。

CreateText を使用すると、新しいテキスト ファイルを作成して、TStreamWriter インスタンスを取得することができます。CreateText は、指定されたパスに新しい空のテキスト ファイルを作成し、その後、そのファイルに関連する TStreamWriter インスタンスを作成します。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path作成されるファイルのパス。
 
メモ: ファイルを作成できない場合やパスが無効な場合には、CreateText は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
st := TFile.CreateText(s);
st.WriteLine('ストリームライターで新規作成のテスト');
st.Close;
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を新規作成し(既に存在すれば破棄)、
ストリームライターで新規作成のテスト
という内容を追記します(改行付き)。UTF8エンコードのようです。
Windows7・MacOSX ともに正常動作します。
 
Decrypt
class procedure Decrypt(const Path: string); static;
指定されたパスにあるファイルの暗号解読を行います。

Decrypt を使用すると、オペレーティング システムが提供する機能を使って、指定したファイルの暗号解読を行うことができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path暗号解読するファイルのパス。
 
メモ: 解読対象のファイルが存在しない場合、パスが無効な場合、暗号解読を行えるだけの権限をユーザーが持たない場合には、Decrypt は例外を発生させます。
メモ: Decrypt は、NTFS パーティション(Windows プラットフォーム)上に位置するファイル上でのみ使用できます。
下記の Encrypt と対になると思われますので、下記にまとめます。
 
Delete
class procedure Delete(const Path: string); static;
指定されたパスにあるファイルを削除します。

Delete を使用すると、指定したパスにあるファイルを削除することができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path削除対象のファイルのパス。
 
メモ: 指定した Path が無効であったりファイルでない場合には、Delete は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
TFile.Delete(s);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を削除します。ファイルが無い場合は、例外は発生しないようです。
Windows7・MacOSX ともに正常動作します。
 
Encrypt
class procedure Encrypt(const Path: string); static;
指定されたパスにあるファイルを暗号化します。

Encrypt を使用すると、オペレーティング システムが提供する機能を使って、指定したファイルを暗号化することができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path暗号化するファイルのパス。
 
メモ: 暗号化対象のファイルが存在しない場合、パスが無効な場合、暗号化を行えるだけの権限をユーザーが持たない場合には、Encrypt は例外を発生させます。
メモ: Encrypt は、NTFS パーティション(Windows プラットフォーム)上に位置するファイル上でのみ使用できます。
s := ExtractFilePath(ParamStr(0))+'TEST1.txt';
st := TFile.CreateText(s);
st.WriteLine('TEST1: This is Test Program.');
st.WriteLine('----- ========== ----- ');
st.WriteLine('これはテストプログラムです。');
st.Close;
TFile.Encrypt(s);
のようにして、ファイル「TEST1.txt」を作成し、暗号化を試みてみましたが、Windows7・NTFSフォーマットされたHDD上で動作していますが、
「この要求はサポートされていません。」
という例外が発生し、何も行われません。ですので、Decrypt手続きも無意味ですから記述しません。Decrypt手続きの方は例外発生しない様子ですが、上記のテキストファイルに対しては何の処理も行われません。
MacOSXでは、この手続きは実装されていませんので使用不可能です。
 
Exists
class function Exists(const Path: string;
 FollowLink: Boolean = True): Boolean; inline; static;
指定されたファイルが存在するかどうかを確認します。

Exists を使用すると、指定したファイルが存在するかどうかを確認することができます。 Exists は、指定したパスが存在してそれがファイルである場合には True を、それ以外の場合には False を返します。

このメソッドに必要なパラメータの一覧を以下の表に示します:
名前意味
Path確認対象のファイルのパス。
FollowLinksymbolic linkが使用されているかどうかを示します。
 
メモ: 指定したパスが無効な場合、Exists メソッドは単に False を返します。
メモ:Path パラメータが シンボリック リンク であり、FollowLink パラメータが True に設定されている場合、このメソッドは対象ファイルに対して実行されます。 最初の条件が True だが FollowLink パラメータが False に設定されている場合、メソッドはシンボリック リンクに対して実行されます。 リンクが壊れている場合、メソッドは常に False を返します。
s := ChangeFileExt(ParamStr(0),'.txt');
if (TFile.Exists(s)) then
 Memo1.Lines.Add('ファイル【'+s+'】は存在します')
else
 Memo1.Lines.Add('ファイル【'+s+'】は存在しません');
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)があるかどうかを確認します。
Windows7・MacOSX ともに正常動作します。
 
GetAttributes
class function GetAttributes(
 const Path: string; FollowLink: Boolean = True)
 : TFileAttributes; inline; static;
ファイル属性を返します。

GetAttributes を呼び出すと、指定したファイルの属性を取得することができます。 GetAttributes の戻り値は TFileAttribute 値の集合であり、集合内のそれぞれの値が 1 つのファイル属性を表します。

このメソッドに必要なパラメータの一覧を以下の表に示します:
名前意味
Path属性を設定するファイルのパス。
FollowLinkシンボリック リンクが使用されているかどうかを示します。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合には、GetAttributes は例外を発生させます。
メモ:Path パラメータが シンボリック リンク であり、FollowLink パラメータが True に設定されている場合、このメソッドは対象ファイルに対して実行されます。 最初の条件が True だが FollowLink パラメータが False に設定されている場合、メソッドはシンボリック リンクに対して実行されます。 リンクが壊れている場合、メソッドは常に False を返します。
type TFileAttributes = set of TFileAttribute;
 
TFileAttribute = (faReadOnly, faHidden, faSystem, faDirectory, faArchive, faDevice, faNormal, faTemporary, faSparseFile, faReparsePoint, faCompressed, faOffline, faNotContentIndexed, faEncrypted, faSymLink) platform;

faReadOnly
 読み取り専用ファイルまたは読み取り専用ディレクトリであることを示します。

faHidden
 隠しファイルまたは隠しディレクトリであることを示します。

faSystem
 システム ファイルまたはシステム ディレクトリであることを示します。

faDirectory
 ディレクトリであることを示します。

faArchive
 Windows アーカイブ ファイルであることを示します。

faDevice
 Windows デバイス ファイルであることを示します。

faNormal
 通常のファイルであることを示します。

faTemporary
 一時ファイルまたは一時ディレクトリであることを示します。

faSparseFile
 スパース ファイルであることを示します。スパース ファイルとは、ほとんどゼロで埋められた大きいファイルのことです。

faReparsePoint
 再解析ポイントであることを示します。再解析ポイントとは、実際のファイルまたはディレクトリにリンクしているユーザー定義データ ブロックのことです。

faCompressed
 圧縮ファイルまたは圧縮ディレクトリであることを示します。

faOffline
 内容が使用不能なオフライン ファイルであることを示します。

faNotContentIndexed
 インデックス付け操作を省略されたファイルであることを示します。

faEncrypted
 暗号化されたファイルまたはディレクトリであることを示します。

faSymLink
 シンボリック リンクであることを示します。
ボタン、開く画面を配置し、
var
s : string ;
a : TFileAttributes ;
begin
 if OpenDialog1.Execute then begin
  s := OpenDialog1.FileName ;
  Memo1.Lines.Clear;
  Memo1.Lines.Add('【'+s+'】');
  a := TFile.GetAttributes(s);
  if (System.IOUtils.TFileAttribute.faReadOnly in a) then
   Memo1.Lines.Add('読み取り専用');
  if (System.IOUtils.TFileAttribute.faHidden in a) then
   Memo1.Lines.Add('隠し');
  if (System.IOUtils.TFileAttribute.faArchive in a) then
   Memo1.Lines.Add('Windows アーカイブ');
  if (System.IOUtils.TFileAttribute.faNormal in a) then
   Memo1.Lines.Add('通常');
 end;
等のようにすると、指定したファイルの属性がメモに表示されます。が、これは Windowsのみ実行可能で、MacOSX の場合には、コンパイル時にエラーが発生します。
 
GetCreationTime
class function GetCreationTime(
 const Path: string)
 : TDateTime; inline; static;
ファイルの作成時刻を返します。

GetCreationTime を使用すると、ファイルの作成時刻を取得することができます。

メモ: 指定したパスが無効であったりファイルが存在しない場合には、GetCreationTime は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := TFile.GetCreationTime(s);
Memo1.Lines.Add('生成日時:'+DateTimeToStr(d));
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の生成された日時が表示されます。
生成日時:2014/07/07 2:00:00
Windows7の場合は、エクスプローラでの表示と同じになりますが、MacOSXの場合は、生成日時ではなく更新日時の様子です?
 
GetCreationTimeUtc
class function GetCreationTimeUtc(
 const Path: string)
 : TDateTime; inline; static;
ファイルの UTC(協定世界時)タイムゾーンでの作成時刻を返します。

GetCreationTimeUtc を使用すると、ファイルの UTC(協定世界時)タイムゾーンでの作成時刻を取得することができます。

メモ: 指定したパスが無効であったりファイルが存在しない場合には、GetCreationTimeUtc は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := TFile.GetCreationTimeUtc(s);
Memo1.Lines.Add('生成日時(UTC):'+DateTimeToStr(d));
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の生成されたUTC日時が表示されます。
生成日時(UTC):2014/07/06 17:00:00
Windows7・MacOSXともに動作します。GetCreationTime の9時間前になります。
 
GetLastAccessTime
class function GetLastAccessTime(
 const Path: string)
 : TDateTime; inline; static;
ファイルの最終アクセス時刻を返します。

GetLastAccessTime を使用すると、ファイルの最終アクセス時刻を取得することができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path最終アクセス時刻を取得したいファイルのパス。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、GetLastAccessTime は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := TFile.GetLastAccessTime(s);
Memo1.Lines.Add('最終アクセス日時:'+DateTimeToStr(d));
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)のアクセスされた最終日時が表示されます。
最終アクセス日時:2014/07/07 2:00:00
Windows7・MacOSXともに動作します。Windows7の場合は、エクスプローラでの表示と同じになりますが、アクセス日時は生成日時と同じ状態のようです?
 
GetLastAccessTimeUtc
class function GetLastAccessTimeUtc(
 const Path: string)
 : TDateTime; inline; static;
ファイルの UTC(協定世界時)タイムゾーンでの最終アクセス時刻を返します。

GetLastAccessTimeUtc を使用すると、ファイルの UTC(協定世界時)タイムゾーンでの最終アクセス時刻を取得することができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path最終アクセス時刻を取得したいファイルのパス。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、GetLastAccessTimeUtc は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := TFile.GetLastAccessTimeUtc(s);
Memo1.Lines.Add('最終アクセス日時(UTC):'+DateTimeToStr(d));
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)のアクセスされた最終UTC日時が表示されます。
最終アクセス日時(UTC):2014/07/06 17:00:00
Windows7・MacOSXともに動作します。GetLastAccessTime の9時間前になります。
 
GetLastWriteTime
class function GetLastWriteTime(
 const Path: string)
 : TDateTime; inline; static;
ファイルの最終書き込み時刻を返します。

GetLastWriteTime を使用すると、ファイルの最終書き込み時刻を取得することができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path最終書き込み時刻を取得したいファイルのパス。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、GetLastWriteTime は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := TFile.GetLastWriteTime(s);
Memo1.Lines.Add('最終書き込み日時:'+DateTimeToStr(d));
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の書き込みがあった最終日時が表示されます。
最終書き込み日時:2014/07/07 15:00:00
Windows7・MacOSXともに動作します。Windows7・MacOSXとも、更新日時と同じになります。
 
GetLastWriteTimeUtc
class function GetLastWriteTimeUtc(
 const Path: string)
 : TDateTime; inline; static;
ファイルの UTC(協定世界時)タイムゾーンでの最終書き込み時刻を返します。

GetLastWriteTimeUtc を使用すると、ファイルの UTC(協定世界時)タイムゾーンでの最終書き込み時刻を取得することができます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path最終書き込み時刻を取得したいファイルのパス。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、GetLastWriteTimeUtc は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := TFile.GetLastWriteTimeUtc(s);
Memo1.Lines.Add('最終書き込み日時(UTC):'+DateTimeToStr(d));
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の書き込みがあった最終UTC日時が表示されます。
最終書き込み日時(UTC):2014/07/07 6:00:00
Windows7・MacOSXともに動作します。GetLastWriteTime の9時間前になります。
 
GetSymLinkTarget
class function GetSymLinkTarget(
 const FileName: string;
 var SymLinkRec: TSymLinkRec): Boolean;
 overload; static;
class function GetSymLinkTarget(
 const FileName: string;
 var TargetName: string): Boolean;
 overload; static;
GetSymLinkTarget は、シンボリック リンク のコンテンツを読み取ります。

GetSymLinkTarget メソッドには 2 つのオーバーロードがあります。1 つ目のオーバーロードはシンボリック リンクのコンテンツを読み取り、その結果が SymLinkRec パラメータで指定されたシンボリック リンク レコードに返されます。一方 2 つ目のオーバーロードは、TargetName パラメータで指定されたシンボリック リンクのターゲットを返します。

このメソッドは、シンボリック リンク が無効な場合に True を返し、それ以外の場合に False を返します。

メモ:GetSymLinkTarget は、Windows Vista およびそれ以降のバージョンでのみ使用可能です。
 TSymLinkRec = record
  private
    function GetTimeStamp: TDateTime;
  public
    TargetName: TFileName;
    Attr: Integer;
    Size: Int64;
{$IFDEF MSWINDOWS}
    FindData: TWin32FindData platform;
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
    Time: time_t platform;
    Mode: mode_t platform;
    PathOnly: string platform;
{$ENDIF POSIX}
    property TimeStamp: TDateTime
        read GetTimeStamp;
  end;
TSymLinkRec は、シンボリック リンク ファイルについての情報を保存するために使用されます。 TSymLinkRec は、シンボリック リンク ファイルについての情報を保存するために使用する、データ構造を定義しています。 Symlink は、シンボリック リンク ファイル を表します。これは、別のファイルやディレクトリへの絶対パスまたは相対パス形式の参照を含む、特殊なファイル型です。
 
メモ: Windows と MAC OS では、シンボリック リンクの実装は異なります。
メモ: Microsoft は、Windows Vista 以降、シンボリック リンク ファイルのサポートを追加しました。
MacOSX では、ターミナルで
ln -s p440.txt p4
としてシンボリックリンクを作成しておいた状態で、
s := ExtractFilePath(ParamStr(0))+'p4';
TFile.GetSymLinkTarget(s,t);
Memo1.Lines.Add(t);
のように実行すると、「p440.txt」と表示させる事が可能です。
 
Windows7では、シンボリックリンクの作成方法が分からないので不明です。上記を実行すると、「ドライブが見つかりません」という例外が発生します。
 
Move
class procedure Move(
 SourceFileName, DestFileName: string); static;
指定されたパスから別のパスにファイルを移動します。

Move を使用すると、指定したパスから別のパスにファイルを移動することができます。DestFileName が既存ファイルを指している場合には、Move は例外を発生させます。

次の表に、このメソッドが受け取るパラメータを示します。
名前意味
SourceFileName移動対象のファイルのパス。
DestFileNameファイルを移動する先のパス。
 
メモ: 指定したパスが無効な場合、存在しない場合、アクセス不可能な場合には、Move は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
t := ChangeFileExt(ParamStr(0),'.org');
TFile.Move(s,t);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を、同じフォルダの拡張子が「.org」のファイル(p440.org)に「移動」します。同じフォルダだと、ファイル名の変更と同じですね。
既に同じファイル名があると、「指定されたファイルは既に存在します」という例外が発生します。
s := ChangeFileExt(ParamStr(0),'.txt');
t := TDirectory.GetParent(TPath.GetDirectoryName(ParamStr(0)))+'/'+ExtractFileName(s);
if not(TFile.Exists(t)) then
 TFile.Move(s,t);
のようにすれば親フォルダに移動します。
Windows7・MacOSXともに動作します。
 
Open
class function Open(const Path: string;
 const Mode: TFileMode)
 : TFileStream; overload; inline; static;
class function Open(const Path: string;
 const Mode: TFileMode;
 const Access: TFileAccess)
 : TFileStream;
class function Open(const Path: string;
 const Mode: TFileMode;
 const Access: TFileAccess;
 const Share: TFileShare)
 : TFileStream; overload; static;
ファイルを開き、そのファイルに関連付けられたストリームを返します。

Open を呼び出すと、ファイルを開くことができます。渡した TFileMode の値に応じて、ファイルを開くか作成するか追加するかが決まります。いずれの場合にも TFileStream インスタンスが返されます。このインスタンスを使ってデータの読み取りや書き込みを行うことができます。Access パラメータ(省略可能)によって、ファイルを読み取り、書き込み、読み書きのどのモードで開くかを指定できます。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path開きたいファイルのパス。
Modeファイルを開くモード。
Access行いたいファイルアクセス。
 
メモ: ファイルを開けない場合やパスが無効な場合には、Open は例外を発生させます。Mode パラメータと Access パラメータの組み合わせによって、例外条件が発生する可能性があります。
TFileMode = (fmCreateNew, fmCreate, fmOpen,
 fmOpenOrCreate, fmTruncate, fmAppend);
ファイルを開く際に指定可能なモードを列挙したものです。
TFileMode は、ファイルを開く際に指定可能なモードを列挙したものです。TFileMode の取り得る値は以下のとおりです。
名前意味
fmCreateNewファイルを作成し、書き込みアクセスを可能にします。ファイルが既に存在する場合は、例外が送出されなければなりません。
fmCreateファイルを作成し、書き込みアクセスを可能にします。ファイルが既に存在する場合、そのファイルはサイズ変更されます。
fmOpenファイルを開きます。ファイルが存在しない場合は、例外が送出されなければなりません。
fmOpenOrCreateファイルを開きます。ファイルが存在しない場合は、作成されなければなりません。
fmTruncateファイルのサイズを変更します。ファイルが存在しない場合は、例外が送出されなければなりません。
fmAppendファイルを追加モードで開きます。次回以降の書き込みデータはファイルの末尾に追加されます。ファイルが存在しない場合は、例外が送出されなければなりません。
TFileAccess = (faRead, faWrite, faReadWrite);
指定可能なファイル アクセス モードを列挙したものです。

TFileAccess は、指定可能なファイル アクセス モードを列挙したものです。各モードでは、ユーザーは開くファイルに対する要求されている権限が必要です。TFileAccess の取り得る値は以下のとおりです。
名前意味
faReadファイルは読み取り専用モードで開かれます。
faWriteファイルは書き込み専用モードで作成され、サイズ変更され、開かれます。
faReadWriteファイルは読み書きモードで作成され、サイズ変更され、開かれます。
TFileShare = (fsNone, fsRead, fsWrite, fsReadWrite);
指定可能なファイル共有モードを列挙したものです。

TFileShare は、指定可能なファイル共有モードを列挙したものです。TFileShare 列挙型はファイル管理メソッドで使用され、当該プロセスで開かれたファイルに対する読み取り権限や書き込み権限が他のプロセスにあるかないかを示します。TFileShare の取り得る値は以下のとおりです。
名前意味
fsNoneファイルは共有されません。
fsReadファイルは読み取り専用モードで共有されます。
fsWriteファイルは書き込み専用モードで共有されます。
fsReadWriteファイルは読み書きモードで共有されます。
var
 s : string ;
 st : TFileStream ;
 b : TBytes ;
begin
 s := ChangeFileExt(ParamStr(0),'.txt');
 st := TFile.Open(s,TFileMode.fmOpen);
 SetLength(b,st.Size);
 st.ReadData(b,Length(b));
 st.Free ;
 b := TEncoding.Convert(TEncoding.UTF8,TEncoding.Default,b);
 s := StringOf(b);
 b := nil ;
 Memo1.lines.Add(s);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を開き、メモに表示します。
Windows7・MacOSXともに動作します。
 
OpenRead
class function OpenRead(const Path: string)
 : TFileStream; static;
ファイルを読み取り用に開き、そのファイルに関連付けられたストリームを返します。

OpenRead を呼び出すと、ファイルを読み取り用に開くことができます。OpenRead は、データの読み取りにしか使えない TFileStream インスタンスを返します。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path読み取り用に開くファイルのパス。
 
メモ: ファイルが開けない場合、パスが無効な場合、この操作を実施できるだけの権限をユーザーが持たない場合には、OpenRead は例外を発生させます。
var
 s : string ;
 st : TFileStream ;
 b : TBytes ;
begin
 s := ChangeFileExt(ParamStr(0),'.txt');
 st := TFile.OpenRead(s);
 SetLength(b,st.Size);
 st.ReadData(b,Length(b));
 st.Free ;
 b := TEncoding.Convert(TEncoding.UTF8,TEncoding.Default,b);
 s := StringOf(b);
 b := nil ;
 Memo1.lines.Add(s);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を開き、メモに表示します。
Windows7・MacOSXともに動作します。
 
OpenText
class function OpenText(const Path: string)
 : TStreamReader; static;
テキスト ファイルを読み取り用に開き、そのファイルに関連付けられたストリームを返します。

OpenText を呼び出すと、テキスト ファイルを読み取り用に開くことができます。OpenText は、テキスト データの読み取りにしか使えない TStreamReader インスタンスを返します。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path読み取り用に開くファイルのパス。
 
メモ: ファイルが開けない場合、パスが無効な場合、この操作を実施できるだけの権限をユーザーが持たない場合には、OpenText は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
sr:= TFile.OpenText(s);
s := sr.ReadToEnd ;
sr.Close;
Memo1.lines.Add(s);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を開き、メモに表示します。
Windows7・MacOSXともに動作します。
 
OpenWrite
class function OpenWrite(const Path: string)
 : TFileStream; static;
ファイルを書き込み用に開き、そのファイルに関連付けられたストリームを返します。

OpenWrite を呼び出すと、ファイルを書き込み用に開くことができます。OpenWrite は、データの書き込みにしか使えない TFileStream インスタンスを返します。次の表に、このメソッドが受け取るパラメータを示します。
名前意味
Path書き込み用に開くファイルのパス。
 
メモ: ファイルが開けない場合、パスが無効な場合、この操作を実施できるだけの権限をユーザーが持たない場合には、OpenWrite は例外を発生させます。
var
 s : string ;
 st : TFileStream ;
 b : TBytes ;
begin
 s := ChangeFileExt(ParamStr(0),'.txt');
 st := TFile.OpenWrite(s);
 s := 'ファイルストリームで書き込みのテスト'+#13+#10;
 b := BytesOf(s);
 b := TEncoding.Convert(TEncoding.Default,TEncoding.UTF8,b);
 st.WriteData(b,Length(b));
 s := 'This is FileStream Writting Test.'+#13+#10;
 b := BytesOf(s);
 st.WriteData(b,Length(b));
 st.Free ;
 b := nil ;
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を開き、ファイルの先頭から上記プログラムでの文字列の上書きを行います。例えば、以前のファイル内容が
あいうえおかきくけこ
に対して、本手法で「さしすせそ」を書き込むと、
さしすせそかきくけこ
という結果になります。
 
指定したファイルが存在しない場合は例外が発生します。ファイルが存在しない場合は新規作成に、とはなりません。
Windows7・MacOSXともに動作します。
 
ReadAllBytes
class function ReadAllBytes(const Path: string)
 : TBytes; static;
ファイルの内容を読み取ってバイト配列に格納します。

バイナリ ファイルの内容を読み取るには ReadAllBytes を使用します。ReadAllBytes は、ファイル データを含む新しいバイト配列を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Pathファイルのパス。
 
メモ: ファイルを開けない場合やパスが無効な場合、ReadAllBytes は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
b := TFile.ReadAllBytes(s);
b := TEncoding.Convert(TEncoding.UTF8,TEncoding.Default,b);
s := StringOf(b);
b := nil;
Memo1.lines.Add(s);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を開き、メモに表示します。
Windows7・MacOSXともに動作します。
 
ReadAllLines
class function ReadAllLines(const Path: string)
 : TStringDynArray;
class function ReadAllLines(const Path: string;
 const Encoding: TEncoding)
 : TStringDynArray; overload; static;
テキスト ファイルの内容を読み取って文字列配列に格納します。

テキスト ファイルの内容を読み取るには ReadAllLines を使用します。ReadAllLines は、ファイルから読み取ったテキスト行を含む新しい文字列配列を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Pathファイルのパス。
Encodingファイル内に含まれているテキストのエンコーディング。
 
メモ: ファイルを開けない場合やパスが無効な場合、ReadAllLines は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
a := TFile.ReadAllLines(s);
for i := 0 to Length(a)-1 do
 Memo1.Lines.Add(a[i]);
a := nil;
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を開き、メモに表示します。ファイルが UTF8 でエンコードされている場合は、文字化けしますので
s := ChangeFileExt(ParamStr(0),'.txt');
a := TFile.ReadAllLines(s,TEncoding.UTF8);
for i := 0 to Length(a)-1 do
 Memo1.Lines.Add(a[i]);
a := nil;
のようにしたい所ですが、何故か、ファイルの先頭の文字が欠けてしまいます。
Windows7・MacOSXともに動作します。
 
ReadAllText
class function ReadAllText(const Path: string)
 : string; overload; inline; static;
class function ReadAllText(const Path: string;
 const Encoding: TEncoding)
 : string; overload; inline; static;
テキスト ファイルの内容を文字列として返します。

テキスト ファイルの内容を読み取るには ReadAllText を使用します。ReadAllText は、ファイルから読み取ったテキスト行を含む文字列を返します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Pathファイルのパス。
Encodingファイル内に含まれているテキストのエンコーディング。
 
メモ: ファイルを開けない場合やパスが無効な場合、ReadAllText は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
t := TFile.ReadAllText(s);
Memo1.Lines.Add(t);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)を開き、メモに表示します。ファイルが UTF8 でエンコードされている場合は、文字化けしますので
s := ChangeFileExt(ParamStr(0),'.txt');
t := TFile.ReadAllText(s,TEncoding.UTF8);
Memo1.Lines.Add(t);
のようにしたい所ですが、何故か、ファイルの先頭の文字が欠けてしまいます。
Windows7・MacOSXともに動作します。
 
Replace
class procedure Replace(
 const SourceFileName, DestinationFileName,
 DestinationBackupFileName: string);
  overload; inline; static;
class procedure Replace(
 SourceFileName, DestinationFileName,
 DestinationBackupFileName: string;
 const IgnoreMetadataErrors: Boolean);
  overload; static;
ファイルの内容を別のファイルの内容に置き換えます。

ファイルの内容を別のファイルの内容に置き換えるには、Replace を使用します。Replace は、置き換えられるファイルのバックアップも行います。1 番目の形式の Replace は、ファイルのメタデータをマージできない場合は失敗します。2 番目の形式の Replace では、メタデータが競合する場合に失敗させるかどうかを指定できます。Windows オペレーティング システムでは、ファイルのメタデータに ACL(アクセス制御リスト)とその他のファイル依存の情報が含まれます。

このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
SourceFileName内容のコピー元となるファイルのパス。
DestinationFileName内容が置換されるファイルのパス。
DestinationBackupFileName置換操作を実行する前に作成されるバックアップ ファイルのパス。
IgnoreMetadataErrorsメタデータのエラーを無視するかどうかを指定します。
 
メモ: コピー元または置換先のファイルが存在しない場合、パスが無効な場合、または置換操作を行う権限をユーザーが持っていない場合には、Replace は例外を発生させます。IgnoreMetadataErrors が False に設定されている場合は、メタデータのマージに失敗すると例外が発生します。
メモ: Replace は、NTFS パーティション(Windows プラットフォーム)上に位置するファイル上でのみ使用できます。
s := ChangeFileExt(ParamStr(0),'.txt');
t := ChangeFileExt(ParamStr(0),'.tmp');
b := 'コピー先テスト' + #13 + #10;
TFile.AppendAllText(t,b,TEncoding.UTF8);
b := ChangeFileExt(ParamStr(0),'.bak');
TFile.Replace(s,t,b);
のようにすると、実行プログラム(p440)と同じフォルダ内で、
p440.txt の内容が p440.tmp、
p440.tmp の内容が p440.bak、と置き換わり、
ファイル p440.txt は無くなります。
既に p440.bak が存在する場合は、その内容は破棄されます。
Windows7・MacOSXともに動作します。
 
SetAttributes
class procedure SetAttributes(
 const Path: string;
 const Attributes: TFileAttributes);
  inline; static;
ファイル属性を設定します。

指定のファイルに新しい属性セットを適用するには、SetAttributes を呼び出します。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path属性を設定するファイルのパス。
属性ファイルに適用する新しい属性セット。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合、SetAttributes は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
TFile.SetAttributes(s,
  [System.IOUtils.TFileAttribute.faHidden]);
のようにすると、Windows7の場合は、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の属性を、隠しファイルにします。
MacOSX の場合は、コンパイル時にエラーが出て、プログラムを作成する事は出来ません。
 
SetCreationTime
class procedure SetCreationTime(
 const Path: string;
 const CreationTime: TDateTime);
  inline; static;
ファイルの作成時刻を変更します。

ファイルの作成時刻を変更するには、SetCreationTime を使用します。 このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path作成時刻を変更しようとするファイルのパス。
CreationTimeファイルに適用しようとする新しい作成時刻。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、SetCreationTime は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := StrToDateTime('00/03/01 10:20:30');
TFile.SetCreationTime(s,d);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の 生成日時を変更している、つもりですが、Windows、MacOSXともに、反応無しのようです。
 
SetCreationTimeUtc
class procedure SetCreationTimeUtc(
 const Path: string;
 const CreationTime: TDateTime);
  inline; static;
ファイルの作成時刻を変更します。

ファイルの作成時刻を変更するには、SetCreationTime を使用します。 新しい日時 はUTC(Coordinated Universal Time:協定世界時)であると見なされます。

このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path作成時刻を変更しようとするファイルのパス。
CreationTimeファイルに適用しようとする新しい作成時刻。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、SetCreationTimeUtc は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := StrToDateTime('00/03/01 10:20:30');
TFile.SetCreationTimeUtc(s,d);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の 生成日時を変更している、つもりですが、Windows、MacOSXともに、反応無しのようです。
 
SetLastAccessTime
class procedure SetLastAccessTime(
 const Path: string;
 const LastAccessTime: TDateTime);
  inline; static;
ファイルの最終アクセス時刻を変更します。

ファイルの最終アクセス時刻を変更するには、SetLastAccessTime を使用します。 このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path最終アクセス時刻を変更しようとするファイルのパス。
LastAccessTimeファイルに適用しようとする新しい最終アクセス時刻。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、SetLastAccessTime は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := StrToDateTime('00/04/01 11:22:33');
TFile.SetLastAccessTime(s,d);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の 最終アクセス日時を変更します。
Windows7・MacOSXともに動作します。
 
SetLastAccessTimeUtc
class procedure SetLastAccessTimeUtc(
 const Path: string;
 const LastAccessTime: TDateTime);
  inline; static;
ファイルの最終アクセス時刻を変更します。

ファイルの最終アクセス時刻を変更するには、SetLastAccessTimeUtc を使用します。 新しい日時 はUTC(Coordinated Universal Time:協定世界時)であると見なされます。 このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path最終アクセス時刻を変更しようとするファイルのパス。
LastAccessTimeファイルに適用しようとする新しい最終アクセス時刻。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、SetLastAccessTimeUtc は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := StrToDateTime('00/04/01 11:22:33');
TFile.SetLastAccessTimeUtc(s,d);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の 最終アクセスUTC日時を変更します。
Windows7・MacOSXともに動作します。
 
SetLastWriteTime
class procedure SetLastWriteTime(
 const Path: string;
 const LastWriteTime: TDateTime);
  inline; static;
ファイルの最終書き込み時刻を変更します。

ファイルの最終書き込み時刻を変更するには、SetLastWriteTime を使用します。 このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path最終書き込み時刻を変更したいファイルのパス。
LastWriteTimeファイルに適用しようとする新しい最終書き込み時刻。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、SetLastWriteTime は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := StrToDateTime('00/05/01 00:00:00');
TFile.SetLastWriteTime(s,d);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の 最終書き込み日時(更新日時)を変更します。
Windows7・MacOSXともに動作します。
 
SetLastWriteTimeUtc
class procedure SetLastWriteTimeUtc(
 const Path: string;
 const LastWriteTime: TDateTime);
  inline; static;
ファイルの最終書き込み時刻を変更します。

ファイルの最終書き込み時刻を変更するには、SetLastWriteTimeUtc を使用します。 新しい日時 はUTC(Coordinated Universal Time:協定世界時)であると見なされます。 このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Path最終書き込み時刻を変更したいファイルのパス。
LastWriteTimeファイルに適用しようとする新しい最終書き込み時刻。
 
メモ: 指定したパスが無効であったりファイルが存在しない場合には、SetLastWriteTimeUtc は例外を発生させます。
s := ChangeFileExt(ParamStr(0),'.txt');
d := StrToDateTime('00/06/01 00:00:00');
TFile.SetLastWriteTime(s,d);
のようにすると、実行プログラム(p440)と同じフォルダ内の 拡張子が「.txt」のファイル(p440.txt)の 最終書き込みUTC日時(更新日時)を変更します。
Windows7・MacOSXともに動作します。
 
WriteAllBytes
class procedure WriteAllBytes(
 const Path: string; const Bytes: TBytes); static;
バイト配列をファイルに書き込みます。

指定のバイト配列をファイルに書き込むには、WriteAllBytes を使用します。Path パラメータで指定したファイルが存在する場合は、そのファイルが上書きされます。存在しない場合は、ファイルが作成されて、指定のバイトが格納されます。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Pathファイルのパス。
Bytes ファイルに書き込むバイトの配列。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合、WriteAllBytes は例外を発生させます。
var
 s,t : string ;
 b : TBytes ;
begin
 s := ChangeFileExt(ParamStr(0),'.txt');
 t := 'ファイル書き込みのテスト'+#13+#10
  + 'This is File Writting Test.'+#13+#10;
 b := BytesOf(t);
 b := TEncoding.Convert(TEncoding.Default,TEncoding.UTF8,b);
 TFile.WriteAllBytes(s,b);
 b := nil;
 Memo1.lines.Add(t);
のようにすると、実行プログラム(p440)と同じフォルダ内に 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を生成します。
Windows7・MacOSXともに動作します。
 
WriteAllLines
class procedure WriteAllLines(
 const Path: string;
 const Contents: TStringDynArray);
  overload; inline; static;
class procedure WriteAllLines(
 const Path: string;
 const Contents: TStringDynArray;
 const Encoding: TEncoding); overload; static;
指定の文字列配列をファイルに書き込みます。

指定の文字列配列をファイルに書き込むには、WriteAllLines を使用します。Path パラメータで指定したファイルが存在する場合は、そのファイルが上書きされます。存在しない場合は、ファイルが作成されて、指定のテキストが格納されます。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Pathファイルのパス。
Contentsファイルに書き込むテキストを含む文字列の配列。
Encoding文字列に使用するエンコーディング。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合、WriteAllLines は例外を発生させます。
var
 s : string ;
 a : TStringDynArray;
begin
 s := ChangeFileExt(ParamStr(0),'.txt');
 SetLength(a,2);
 a[0] := 'ファイル書き込みのテスト2';
 a[1] := 'This is File Writting Test TYPE-2.';
 TFile.WriteAllLines(s,a,TEncoding.UTF8);
 Memo1.lines.Add(a[0]);
 Memo1.lines.Add(a[1]);
 a := nil;
のようにすると、実行プログラム(p440)と同じフォルダ内に 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を生成します。
Windows7・MacOSXともに動作します。
 
WriteAllText
class procedure WriteAllText(
 const Path, Contents: string); overload; static;
class procedure WriteAllText(
 const Path, Contents: string;
 const Encoding: TEncoding); overload; static;
指定のテキストをファイルに書き込みます。

指定のテキストをファイルに書き込むには、WriteAllText を使用します。Path パラメータで指定したファイルが存在する場合は、そのファイルが上書きされます。存在しない場合は、ファイルが作成されて、指定のテキストが格納されます。このメソッドに必要なパラメータの一覧を以下の表に示します。
名前意味
Pathファイルのパス。
Contents書き込むテキストを含む文字列。
Encodingテキストに使用するエンコーディング。
 
メモ: ファイルにアクセスできない場合やパスが無効な場合、WriteAllText は例外を発生させます。
var
 s,t : string ;
begin
 s := ChangeFileExt(ParamStr(0),'.txt');
 t := 'ファイル書き込みのテスト3'+#13+#10
   + 'This is File Writting Test TYPE-3.'+#13+#10;
 TFile.WriteAllText(s,t,TEncoding.UTF8);
 Memo1.lines.Add(t);
のようにすると、実行プログラム(p440)と同じフォルダ内に 拡張子が「.txt」のファイル(p440.txt;UTF8エンコード)を生成します。
Windows7・MacOSXともに動作します。
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/07/04
 2014/07/10
▼2014/07/16
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.