VirtualFile.Open メソッドとは? わかりやすく解説

VirtualFile.Open メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

派生クラスオーバーライドされた場合仮想リソースへの読み取り専用ストリーム返します

名前空間: System.Web.Hosting
アセンブリ: System.Web (system.web.dll 内)
構文構文

解説解説
使用例使用例

仮想ファイル固有の情報テンプレート ファイル組み合わせて、この組み合わせ返す Open メソッド実装する方法次のコード例示しますテンプレート ファイル取得するためにファイル システム複数回読込まれることによるオーバーヘッドを減らすために、テンプレート ファイルキャッシュされます例の実行必要なコード全体については、VirtualFile クラス概要で「例」を参照してください

Private Function FormatTimeStamp(ByVal
 time As DateTime) As String
  Return String.Format("{0}
 at {1}", _
    time.ToLongDateString(), time.ToLongTimeString)
End Function

Public Overrides Function
 Open() As System.IO.Stream
  Dim templateFile As String
  templateFile = HostingEnvironment.ApplicationPhysicalPath & "App_Data\template.txt"

  Dim pageTemplate As String
  Dim now As DateTime
  now = DateTime.Now

  ' Try to get the page template out of the cache.
  pageTemplate = CType(HostingEnvironment.Cache.Get("pageTemplate"),
 String)

  If pageTemplate Is Nothing
 Then
    ' Get the page template.
    Try
      pageTemplate = My.Computer.FileSystem.ReadAllText(templateFile)
    Catch fileException As Exception
      Throw fileException
    End Try

    ' Set template timestamp.
    pageTemplate = pageTemplate.Replace("%templateTimestamp%",
 _
      FormatTimeStamp(Now))

    ' Make pageTemplate dependent on the template file.
    Dim cd As CacheDependency
    cd = New CacheDependency(templateFile)

    ' Put pageTemplate into cache for maximum of 20 minutes.
    HostingEnvironment.Cache.Add("pageTemplate", pageTemplate,
 cd, _
      Cache.NoAbsoluteExpiration, _
      New TimeSpan(0, 20, 0), _
      CacheItemPriority.Default, Nothing)
  End If

  ' Put the page data into the template.
  pageTemplate = pageTemplate.Replace("%file%", Me.Name)
  pageTemplate = pageTemplate.Replace("%content%",
 content)

  ' Get the data timestamp from the cache.
  Dim dataTimeStamp As DateTime
  dataTimeStamp = CType(HostingEnvironment.Cache.Get("dataTimeStamp"),
 DateTime)
  pageTemplate = pageTemplate.Replace("%dataTimestamp%",
 _
    FormatTimeStamp(dataTimeStamp))

  ' Set a timestamp for the page.
  Dim pageTimeStamp As String
  pageTimeStamp = FormatTimeStamp(now)
  pageTemplate = pageTemplate.Replace("%pageTimestamp%",
 pageTimeStamp)

  ' Put the page content on the stream.
  Dim stream As MemoryStream
  stream = New MemoryStream()

  Dim writer As StreamWriter
  writer = New StreamWriter(stream)

  writer.Write(pageTemplate)
  writer.Flush()
  stream.Seek(0, SeekOrigin.Begin)

  Return stream
End Function
private string FormatTimeStamp(DateTime time)
{
  return String.Format("{0} at {1}",
    time.ToLongDateString(), time.ToLongTimeString());
}

public override Stream Open()
{
  string templateFile = HostingEnvironment.ApplicationPhysicalPath
 + "App_Data\\template.txt";
  string pageTemplate;
  DateTime now = DateTime.Now;

  // Try to get the page template out of the cache.
  pageTemplate = (string)HostingEnvironment.Cache.Get("pageTemplate");

  if (pageTemplate == null)
  {
    // Get the page template.
    using (StreamReader reader = new StreamReader(templateFile))
    {
      pageTemplate = reader.ReadToEnd();
    }

    // Set template timestamp
    pageTemplate = pageTemplate.Replace("%templateTimestamp%", 
      FormatTimeStamp(now));

    // Make pageTemplate dependent on the template file.
    CacheDependency cd = new CacheDependency(templateFile);

    // Put pageTemplate into cache for maximum of 20 minutes.
    HostingEnvironment.Cache.Add("pageTemplate", pageTemplate, cd,
      Cache.NoAbsoluteExpiration,
      new TimeSpan(0, 20, 0),
      CacheItemPriority.Default, null);
  }

  // Put the page data into the template.
  pageTemplate = pageTemplate.Replace("%file%", this.Name);
  pageTemplate = pageTemplate.Replace("%content%", content);

  // Get the data time stamp from the cache.
  DateTime dataTimeStamp = (DateTime)HostingEnvironment.Cache.Get("dataTimeStamp");
  pageTemplate = pageTemplate.Replace("%dataTimestamp%", 
    FormatTimeStamp(dataTimeStamp));
  pageTemplate = pageTemplate.Replace("%pageTimestamp%", 
    FormatTimeStamp(now));

  // Put the page content on the stream.
  Stream stream = new MemoryStream();
  StreamWriter writer = new StreamWriter(stream);

  writer.Write(pageTemplate);
  writer.Flush();
  stream.Seek(0, SeekOrigin.Begin);

  return stream;
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
VirtualFile クラス
VirtualFile メンバ
System.Web.Hosting 名前空間


このページでは「.NET Framework クラス ライブラリ リファレンス」からVirtualFile.Open メソッドを検索した結果を表示しています。
Weblioに収録されているすべての辞書からVirtualFile.Open メソッドを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からVirtualFile.Open メソッド を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

VirtualFile.Open メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



VirtualFile.Open メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS