VirtualFileとは? わかりやすく解説

VirtualFile クラス

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

仮想ファイルまたはリソース領域ファイル オブジェクト表します

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

Public MustInherit Class
 VirtualFile
    Inherits VirtualFileBase
public abstract class VirtualFile : VirtualFileBase
public ref class VirtualFile abstract : public
 VirtualFileBase
public abstract class VirtualFile extends VirtualFileBase
public abstract class VirtualFile extends
 VirtualFileBase
解説解説
使用例使用例

DataSet オブジェクト格納されている情報テンプレート ファイル組み合わせて HTML データ返す VirtualFile クラス実装する方法次のコード例示します。このコード例は、VirtualPathProvider クラスおよび VirtualDirectory クラスコード例連携してDataSet オブジェクト読み込まれデータ ストアから仮想リソース返します例のコンパイルおよび実行のための手全体については、VirtualPathProvider クラス概要で「例」を参照してください

この例は 3 つの部分構成されます。最初にVirtualFile クラス実装方法示します次にDataSet オブジェクト設定使用される XML データ ファイル示します最後にページテンプレート ファイル示します

最初コード例では、VirtualFile クラス実装する方法示してます。この例のコンストラクタでは、カスタム VirtualPathProvider オブジェクトメソッド使用して DataSet オブジェクト返してます。次にDataSet オブジェクト検索して指定した仮想 ファイル パス関連付けられた情報取得しますOpen メソッドでは、DataSet オブジェクトからの情報テンプレート ファイル組み合わせて、この組み合わせStream オブジェクトとして返します

Imports Microsoft.VisualBasic

Imports System
Imports System.Data
Imports System.IO
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.Caching
Imports System.Web.Hosting

Namespace Samples.AspNet.VB
  <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal),
 _
   AspNetHostingPermission(SecurityAction.InheritanceDemand, level:=AspNetHostingPermissionLevel.Minimal)>
 _
  Public Class SampleVirtualFile
    Inherits VirtualFile

    Private content As String
    Private spp As SamplePathProvider

    Public ReadOnly Property
 Exists() As Boolean
      Get
        Return (content <> String.Empty)
      End Get
    End Property

    Public Sub New(ByVal
 virtualPath As String, ByVal
 provider As SamplePathProvider)
      MyBase.New(virtualPath)
      spp = provider
      GetData()
    End Sub

    Protected Sub GetData()
      ' Get the data from the SamplePathProvider.
      Dim spp As SamplePathProvider
      spp = CType(HostingEnvironment.VirtualPathProvider, SamplePathProvider)

      Dim ds As DataSet
      ds = spp.GetVirtualData

      ' Get the virtual file data from the resource table.
      Dim files As DataTable
      files = ds.Tables("resource")

      Dim rows As DataRow()
      rows = files.Select( _
        String.Format("(name='{0}') AND (type='file')",
 Me.Name))

      ' If the select returned a row, store the file contents.
      If (rows.Length > 0) Then
        Dim row As DataRow
        row = rows(0)

        content = row("content").ToString()
      End If
    End Sub


    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
  End Class
End Namespace
using System;
using System.Data;
using System.IO;
using System.Security.Permissions;
using System.Web;
using System.Web.Caching;
using System.Web.Hosting;

namespace Samples.AspNet.CS
{
  [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
  public class SampleVirtualFile : VirtualFile
  {
    private string content;
    private SamplePathProvider spp;

    public bool Exists
    {
      get { return (content != null);
 }
    }

    public SampleVirtualFile(string virtualPath,
 SamplePathProvider provider)
      : base(virtualPath)
    {
      this.spp = provider;
      GetData();
    }

    protected void GetData()
    {
      // Get the data from the SamplePathProvider
      DataSet ds = spp.GetVirtualData();

      // Get the virtual file from the resource table.
      DataTable files = ds.Tables["resource"];
      DataRow[] rows = files.Select(
        String.Format("(name = '{0}') AND (type='file')", this.Name));

      // If the select returned a row, store the file contents.
      if (rows.Length > 0)
      {
        DataRow row = rows[0];

        content = row["content"].ToString();
      }
    }

    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;
    }
  }
}

2 番目の例では、カスタム VirtualPathProvider オブジェクトにより返されDataSet オブジェクト設定するために使用される XML データ ファイル示してます。この XML データVirtualPathProviderVirtualFile、および VirtualDirectory の各クラス使用して外部データからデータ取得する方法を示すものであり、本番品質データ ストア表しているものではありません。

<?xml version="1.0" encoding="utf-8" ?>
<resource type="dir" 
          path="/vrDir" 
          parentPath="" 
          content="">
  <resource type="file" 
            path="/vrDir/Level1FileA.vrf"
            parentPath="/vrDir" 
            content="This is the content of file Level1FileA.">
  </resource>
  <resource type="file" 
            path="/vrDir/Level1FileB.vrf"
            parentPath="/vrDir" 
            content="This is the content of file Level1FileB.">
  </resource>
  <resource type="dir" 
            path="/vrDir/Level2DirA" 
            parentPath="/vrDir" 
            content="">
    <resource type="file" 
              path="/vrDir/Level2DirA/Level2FileA.vrf" 
              parentPath="/vrDir/Level2DirA" 
              content="This is the content of file Level2FileA.">
    </resource>
    <resource type="file" 
              path="/vrDir/Level2DirA/Level2FileB.vrf"
              parentPath="/vrDir/Level2DirA" 
              content="This is the content of file Level2FileB.">
    </resource>
  </resource>
  <resource type="dir" 
            path="/vrDir/Level2DirB" 
            parentPath="/vrDir" 
            content="">
    <resource type="file" 
              path="/vrDir/Level2DirB/Level2FileA.vrf" 
              parentPath="/vrDir/Level2DirB" 
              content="This is the content of file Level2FileA.">
    </resource>
    <resource type="file" 
              path="/vrDir/Level2DirB/Level2FileB.vrf"
              parentPath="/vrDir/Level2DirB" 
              content="This is the content of file Level2FileB.">
    </resource>
  </resource>
</resource>

3 番目の例では、仮想ファイルテンプレートとして使用するテキスト ファイル示してます。このファイル内のプレースホルダは、パーセント記号 (%) で囲まれテキスト (たとえば %file%%content%) で表してます。キャッシュされた仮想ファイル データへの変更監視するためにタイムスタンプ使用してます。

<html>
  <head>
    <title>File name: %file%</title>
  </head>

  <body>
    <h1>%file%</h1>
    <p>%content%</p>
    <p>Page timestamp: %pageTimestamp%<br>
       Data timestamp: %dataTimestamp%<br>
       Template timestamp: %templateTimestamp%</p>
  </body>
</html>
.NET Framework のセキュリティ.NET Frameworkセキュリティ
継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.Web.Hosting.VirtualFileBase
      System.Web.Hosting.VirtualFile
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
VirtualFile メンバ
System.Web.Hosting 名前空間

VirtualFile コンストラクタ

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

VirtualFile クラス新しインスタンス初期化します。

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

Protected Sub New ( _
    virtualPath As String _
)
Dim virtualPath As String

Dim instance As New VirtualFile(virtualPath)
protected VirtualFile (
    string virtualPath
)
protected:
VirtualFile (
    String^ virtualPath
)
protected VirtualFile (
    String virtualPath
)
protected function VirtualFile (
    virtualPath : String
)

パラメータ

virtualPath

このインスタンスによって表されるリソースへの仮想パス

使用例使用例

カスタム VirtualPathProvider オブジェクトによって提供されDataSet オブジェクトから仮想ファイル情報取得する VirtualFile コンストラクタ実装する方法次のコード例示します例の実行必要なコード全体については、VirtualFile クラス概要で「例」を参照してください

Public Sub New(ByVal
 virtualPath As String, ByVal
 provider As SamplePathProvider)
  MyBase.New(virtualPath)
  spp = provider
  GetData()
End Sub

Protected Sub GetData()
  ' Get the data from the SamplePathProvider.
  Dim spp As SamplePathProvider
  spp = CType(HostingEnvironment.VirtualPathProvider, SamplePathProvider)

  Dim ds As DataSet
  ds = spp.GetVirtualData

  ' Get the virtual file data from the resource table.
  Dim files As DataTable
  files = ds.Tables("resource")

  Dim rows As DataRow()
  rows = files.Select( _
    String.Format("(name='{0}') AND (type='file')",
 Me.Name))

  ' If the select returned a row, store the file contents.
  If (rows.Length > 0) Then
    Dim row As DataRow
    row = rows(0)

    content = row("content").ToString()
  End If
End Sub
public SampleVirtualFile(string virtualPath,
 SamplePathProvider provider)
  : base(virtualPath)
{
  this.spp = provider;
  GetData();
}

protected void GetData()
{
  // Get the data from the SamplePathProvider
  DataSet ds = spp.GetVirtualData();

  // Get the virtual file from the resource table.
  DataTable files = ds.Tables["resource"];
  DataRow[] rows = files.Select(
    String.Format("(name = '{0}') AND (type='file')", this.Name));

  // If the select returned a row, store the file contents.
  if (rows.Length > 0)
  {
    DataRow row = rows[0];

    content = row["content"].ToString();
  }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
VirtualFile クラス
VirtualFile メンバ
System.Web.Hosting 名前空間

VirtualFile プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ IsDirectory オーバーライドされますファイルとして扱う必要がある仮想リソースであることを示す値を取得します
パブリック プロパティ Name  仮想リソース表示名取得します。 ( VirtualFileBase から継承されます。)
パブリック プロパティ VirtualPath  仮想ファイルパス取得します。 ( VirtualFileBase から継承されます。)
参照参照

関連項目

VirtualFile クラス
System.Web.Hosting 名前空間

VirtualFile メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド参照)
  名前 説明
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信使用するプロキシ生成必要な情報をすべて格納しているオブジェクト作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 ( Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 ( Object から継承されます。)
パブリック メソッド GetLifetimeService  対象インスタンス有効期間ポリシー制御する現在の有効期間サービス オブジェクト取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド InitializeLifetimeService  リース作成されないようにすることで、VirtualFileBase インスタンス無期限有効期間指定します。 ( VirtualFileBase から継承されます。)
パブリック メソッド Open 派生クラスオーバーライドされた場合仮想リソースへの読み取り専用ストリーム返します
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

VirtualFile クラス
System.Web.Hosting 名前空間

VirtualFile メンバ

仮想ファイルまたはリソース領域ファイル オブジェクト表します

VirtualFile データ型公開されるメンバを以下の表に示します


プロテクト コンストラクタプロテクト コンストラクタ
  名前 説明
プロテクト メソッド VirtualFile VirtualFile クラス新しインスタンス初期化します。
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ IsDirectory オーバーライドされますファイルとして扱う必要がある仮想リソースであることを示す値を取得します
パブリック プロパティ Name  仮想リソース表示名取得します。(VirtualFileBase から継承されます。)
パブリック プロパティ VirtualPath  仮想ファイルパス取得します。(VirtualFileBase から継承されます。)
パブリック メソッドパブリック メソッド
( プロテクト メソッド参照)
  名前 説明
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信使用するプロキシ生成必要な情報をすべて格納しているオブジェクト作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 (Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 (Object から継承されます。)
パブリック メソッド GetLifetimeService  対象インスタンス有効期間ポリシー制御する現在の有効期間サービス オブジェクト取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド InitializeLifetimeService  リース作成されないようにすることで、VirtualFileBase インスタンス無期限有効期間指定します。 (VirtualFileBase から継承されます。)
パブリック メソッド Open 派生クラスオーバーライドされた場合仮想リソースへの読み取り専用ストリーム返します
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

VirtualFile クラス
System.Web.Hosting 名前空間


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

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

辞書ショートカット

すべての辞書の索引

「VirtualFile」の関連用語

VirtualFileのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS