VB超初心者です。m(__)m
VB6.0でUnix間のFTPツールを作成しています。
Unixにあるファイルの作成日付を取得したいのですが、
FtpFindFirstFile関数を使うという所まではわかり、
ソースを実走してみました。
しかし、WIN32_FIND_DATAのcFileNameにはファイル名が取得されるのに、
ftCreationTimeには"0"がセットされてしまいます。
FtpFindFirstFile関数を実行するだけではftCreationTimeは取得出来ないのでしょうか?
勉強不足で申し訳ないですが、もうどうしていいのか判らないので
どなたかご教授願えればと思います。
宜しく御願いします。
> FtpFindFirstFile関数を実行するだけではftCreationTimeは取得出来ないのでしょうか?
汎用的な取得方法は無いかも知れません。FtpFindFirstFile の解説にも、
http://msdn2.microsoft.com/en-us/library/aa384146.aspx
>> For example, creation and last access dates are often
>> the same as the file's modification date.
とあり、たとえば「作成日時=最終アクセス日時=ファイル更新日」の
状態になることさえある、と書かれていますし。
この場合は、通信先の FTP サーバのマニュアルを調べた上で、そのサーバ向けの
独自コマンドを(FTPCommand API 等で)投げて、独自に取得する必要があるかと思います。
# ただし、そのサーバが作成日時を返すコマンドを用意していない場合は、諦めるしか無いかも。
というのも、FtpFindFirstFile API はおそらく、FTP の LIST コマンドを
呼び出しているものと想像していますが、もしそうなら、FTP の仕様書(RFC959)にも、
ftp://ftp.rfc-editor.org/in-notes/rfc959.txt
>> Since the information on a file may vary widely from system
>> to system, this information may be hard to use automatically
>> in a program, but may be quite useful to a human user.
LIST で得られる情報は、その結果がサーバ依存なので、人間にとっては
有用な一覧でも、プログラムから自動的に利用するのは難しいだろうと
記されているので、期待する結果にならない可能性があるでしょう。
# 実際、作成日時を返さず、更新日のみ返すサーバもあるようですし、あるいは、
# 日付情報を"年月日"ではなく、"月日"だけで返すサーバもあるそうで。
# http://support.microsoft.com/kb/306587/ja
>魔界の仮面弁士 さん
詳しいお答えありがとうございます。
正しい作成日時を取得するのは難しそうですね。。。
サーバのマニュアルも無く、管理者の方も「作成日時を返すコマンド」等は判らないようですし。。。
仮に、そのコマンドが判ったとしても、FTPCommand API(?)等、使える自信がありませんf^^;
現在、cFileNameにセットされる、日時+ファイル名(文字化けしていますが)をUnixのコードをEUCからSJISに変えて、結果を見てみようと思います。
その際も、取得出来た日時は、必ずしも正しい結果である保証は無いということですよね。。。
その辺りの事も踏まえて、相談して考えてみます。
ありがとうございました。
ツイート | ![]() |