ファイルに関する情報を出力
[x,ierr] = fileinfo(files)
文字列または文字列の列ベクトル, ファイルパス名
情報を含む大きさ13の整数ベクトルまたは ファイルが存在しない場合に空の行列.
filesが文字列の列ベクトルの場合,
x は
大きさm x 13の行列となります.
あるファイル名が存在しない場合, 出力情報として,
各要素にNanを有する
大きさ13の行を返します.
エラーインジケータ, エラーが発生していない場合に 0
x = fileinfo(file) は以下を返します:
ファイルの大きさ
ファイルモード (10進値).
ユーザid
グループid
デバイス番号
直近の修正日
直近の変更日
直近のアクセス日
デバイス型 (inode デバイスの場合)
ファイルシステム I/O のブロックサイズ (Windowsでは常に0)
確保されたブロック数 (Windowsでは常に0)
inode
ハードリンクの数
この関数はC関数statへのインターフェイスです.
許可属性は,通常,8進数で指定されます : 変換にはdec2oct(x(2))
を使用します
数値モードは,1から4個の8進数 (0-7), 4, 2, および 1でビットを加算することにより導かれます. 全ての省略された桁は先頭にゼロがあると仮定されます. 最初の桁はユーザID(4)を選択し, グループID(2)およびスティッキー(1)属性を設定します. 2番目の桁は,fileを所有するユーザの許可属性を選択します : 読み込み(4), 書き込み(2),実行(1); 3桁目はファイルのグループの同じ値を有する 他のユーザの許可属性を選択します; 4桁目はファイルグループにない同じ値を有する許可属性を 選択します.
許可属性を確認するには, マスクを使用する必要があります.
次の例を見てみましょう:
8進数, x(2)=1664, 最初の桁はsticky属性に対応します.
2桁目はファイル所有者が書き込みおよび読込権限を有することを示します.
これは,このファイルのグループ内の他のユーザも同じです.
最後に他のユーザは読込権限のみ有します.
マスクを適用するには, この8進数をバイナリ(2進数)形式で見るだけで構いません.
つまり:x(2)= 1 110 110 100.
所有者が書き込み権限を有するかどうか確認するには,
2番目のトリプレット: 110 を見て, 書き込み許可 010 を有するものと比較します.
つまり,処理は以下のようになります: 110 000 000 & 010 000 000.
結果がヌルでない場合 (本ケースが相当), 所有者が書き込み権限を有します.
w = fileinfo(SCI+'/etc/scilab.start') // ファイル許可属性 dec2oct(w(2)) // ファイルの日付 getdate(w(6)) // 許可 S_IWRITE = 128; // 書き込み許可属性をマスク S_IEXEC = 64; // 実行許可属性をマスク S_IREAD = 256; // 読み込み許可属性をマスク S_IFCHR = 8192; // ディレクトリ許可属性をマスク // 書き込み許可を確認 if ( bitand( w(2), S_IWRITE ) <> 0) then disp('WRITE PERMISSION on this file.'); else disp('NO WRITE PERMISSION on this file.'); end // 読込許可を確認 if ( bitand( w(2), S_IREAD ) <> 0) then disp('READ PERMISSION on this file.'); else disp('NO READ PERMISSION on this file.'); end FILES = [SCI;SCIHOME;'not_exist_file';TMPDIR] [X,ERRS] = fileinfo(FILES) | ![]() | ![]() |