VirtualFile.Open メソッド
アセンブリ: System.Web (system.web.dll 内)

Dim instance As VirtualFile Dim returnValue As Stream returnValue = instance.Open
仮想ファイルへの読み取り専用のストリーム。

Open メソッドは、VirtualPathProvider クラスでファイルとして扱われるデータを格納しているストリームを返します。このストリームは読み取り専用であり、シーク可能な場合があります。
継承時の注意 Open メソッドは、シーク可能なストリームを返す必要はありません。
仮想ファイル固有の情報をテンプレート ファイルと組み合わせて、この組み合わせを返す 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; }

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からVirtualFile.Open メソッドを検索する場合は、下記のリンクをクリックしてください。

- VirtualFile.Open メソッドのページへのリンク