DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイルの作成日時を取得したい

分類:[ASP.NET]

こんにちは。.net初心者です。
Localホストでデバッグしている時に、GetFileTime関数を使用してファイルの作成日時を取得できました。
サーバーでにアップロードしてテストした結果、GetFileTime(パス名)でファイルの更新日時を取得しようとすると、ファイルが存在しないエラーが発生したため、下記のような方法に変更したいのですが、行き詰ってます。

Dim wc As New Net.WebClient
wc.BaseAddress = "http://・・・"
wc.Credentials = New Net.NetworkCredential(パスワード, ユーザー名)
Dim st As System.IO.Stream = wc.OpenRead("ファイル名")

読み込み可能なことを確認できたので、ファイルの属性も取得できそうです。
System.IO.FileInfoクラスを生成して、CreationTimeメソッドで取得したいのですが、System.IO.FileInfoクラスの生成方法がわかりません。 
どなたか教えて頂けないでしょうか。
2006/04/17(Mon) 18:45:27 編集(投稿者)

お世話になります。

■No15351に返信(困ったさんの記事)
異なるサーバーにあるファイルに対して属性を取得するには、
なんらかの手段で 通信して、実行しているサーバー自身にダウンロードしないと
取得不可能だと思うのですが、HTTP で通信すると、
当然ながら、ファイルの作成日時はダウンロードした日時となってしまいます。
(すでに同一ファイル名が存在する場合は、更新日時がダウンロード日時となります)

ですので、HTTP 通信以外(FTP とか)で通信するのであれば
ファイルの作成日時は取得できるかもしれません。

以下、参考までに。(HTTP 通信で実行した結果がわかります。)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' ページを初期化するユーザー コードをここに挿入します。
  Dim wc As New System.Net.WebClient
  wc.DownloadFile("http://img.yahoo.co.jp/images/main7.gif", "D:\test\test.gif")

  'ダウンロードしたファイル(ダウンロード日時 または 更新日時がダウンロード日時)
  Dim fi As System.IO.FileInfo = New System.IO.FileInfo("D:\test\test.gif")
  Me.Label1.Text = fi.CreationTime.ToString()

  'ローカルにもともとあるファイル(作成日時)
  Dim filocal As System.IO.FileInfo = New System.IO.FileInfo("D:\test\test.csv")
  Me.Label2.Text = filocal.CreationTime.ToString()
End Sub
お世話になっています。ご回答ありがとうございます。

ローカルにダウンロードした日時ではなく、
サーバー上に作成された日時を取得したいと考えています。

ローカルにあるファイルの作成日時を取得できて、サーバー上のファイルの作成日時を取得できないのは、アクセス権の問題と考え、下記のサイトを参考にしました。
http://support.microsoft.com/default.aspx?scid=kb;ja;306158

アクセス権のことを考えると、あまり良い方法ではありませんが、下記の方法で解決しました。

@Web.configに下記を追記
<identity impersonate="true" />

AADim fs As System.IO.FileInfo = New System.IO.FileInfo("ネットワークパス")
label1.text=fs.CreationTime.ToString()

ありがとうございました。

以上
解決済み!
> アクセス権のことを考えると、あまり良い方法ではありませんが、
もっといい方法は Httpヘッダを利用すると良いでしょう。
Httpヘッダを利用すると gif ファイルや html ファイルのサーバ上の
日付を取得できます。
aspx ファイルの日付は取得できません。

C# でのサンプルコードは
System.Net.WebClient cl = new System.Net.WebClient();
using (System.IO.Stream sr = cl.OpenRead(url))
{
if (cl.ResponseHeaders["Last-Modified"] != null)
{
Console.WriteLine(cl.ResponseHeaders["Last-Modified"]);
}
}

DOBON.NET | プログラミング道 | プログラミング掲示板