次の方法で共有


FileWebRequest クラス

WebRequest クラスのファイル システムの実装を提供します。

この型のすべてのメンバの一覧については、FileWebRequest メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.Net.WebRequest
         System.Net.FileWebRequest

<Serializable>
Public Class FileWebRequest   Inherits WebRequest
[C#]
[Serializable]
public class FileWebRequest : WebRequest
[C++]
[Serializable]
public __gc class FileWebRequest : public WebRequest
[JScript]
public
   Serializable
class FileWebRequest extends WebRequest

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

FileWebRequest クラスは、 file:// スキームを使用してローカル ファイルを要求する URI 用に、 WebRequest 抽象 (Visual Basic では MustInherit) 基本クラスを実装します。

FileWebRequest コンストラクタは使用しないでください。 FileWebRequest クラスの新しいインスタンスを初期化するには、 WebRequest.Create メソッドを使用します。URI スキームが file:// の場合、 Create メソッドは、 FileWebRequest インスタンスを返します。

GetResponse メソッドは、 RequestUri プロパティで指定されるファイルへの同期要求を行い、応答を格納した FileWebResponse インスタンスを返します。 BeginGetResponse メソッドと EndGetResponse メソッドを使用して、ファイルへの非同期要求を可能にします。

ファイルにデータを書き込む場合、 GetRequestStream メソッドは書き込み先の Stream インスタンスを返します。 BeginGetRequestStream メソッドと EndGetRequestStream メソッドは、書き込みデータ ストリームへの非同期アクセスを可能にします。

FileWebRequest クラスは、エラー処理とコード アクセス セキュリティのために File クラスを使用します。

使用例

 
'
' This example creates or opens a text file and stores a string in it. 
' Both the file and the string are passed by the user.
' Note. For this program to work, the folder containing the test file
' must be shared, with its permissions set to allow write access. 

Imports System.Net
Imports System
Imports System.IO
Imports System.Text

Namespace Mssc.PluggableProtocols.File

Module TestGetRequestStream

  Class TestGetRequestStream

    Private Shared myFileWebRequest As FileWebRequest

    ' Show how to use this program.
    Private Shared Sub showUsage()
      Console.WriteLine(ControlChars.Lf + "Please enter file name and timeout :")
      Console.WriteLine("Usage: vb_getrequeststream <systemname>/<sharedfoldername>/<filename> timeout")
      Console.WriteLine("Example: vb_getrequeststream ngetrequestrtream() ndpue/temp/hello.txt  1000")
      Console.WriteLine("Small time-out values (for example, 3 or less) cause a time-out exception.")
    End Sub

    Private Shared Sub makeFileRequest(ByVal fileName As String, ByVal timeout As Integer)
      Try
        ' Create a Uri object.to access the file requested by the user. 
        Dim myUrl As New Uri("file://" + fileName)

        ' Create a FileWebRequest object.for the requeste file.
        myFileWebRequest = CType(WebRequest.CreateDefault(myUrl), FileWebRequest)

        ' Set the time-out to the value selected by the user.
        myFileWebRequest.Timeout = timeout

        ' Set the Method property to POST  
        myFileWebRequest.Method = "POST"


      Catch e As WebException
        Console.WriteLine(("WebException is: " + e.Message))
      Catch e As UriFormatException
        Console.WriteLine(("UriFormatWebException is: " + e.Message))
      End Try

    End Sub

    Private Shared Sub writeToFile()
      Try
        ' Enter the string to write to the file.
        Console.WriteLine("Enter the string you want to write:")
        Dim userInput As String = Console.ReadLine()

        ' Convert the string to a byte array.
        Dim encoder As New ASCIIEncoding()
        Dim byteArray As Byte() = encoder.GetBytes(userInput)

        ' Set the ContentLength property.
        myFileWebRequest.ContentLength = byteArray.Length

        Dim contentLength As String = myFileWebRequest.ContentLength.ToString()

        Console.WriteLine(ControlChars.Lf + "The content length is {0}.", contentLength)


        ' Get the file stream handler to write to the file.
        Dim readStream As Stream = myFileWebRequest.GetRequestStream()

        ' Write to the stream. 
        ' Note. For this to work the file must be accessible
        ' on the network. This can be accomplished by setting the property
        ' sharing of the folder containg the file.  
        ' FileWebRequest.Credentials property cannot be used for this purpose.
        readStream.Write(byteArray, 0, userInput.Length)


        Console.WriteLine(ControlChars.Lf + "The String you entered was successfully written to the file.")

        readStream.Close()

      Catch e As WebException
        Console.WriteLine(("WebException is: " + e.Message))
      Catch e As UriFormatException
        Console.WriteLine(("UriFormatWebException is: " + e.Message))
      End Try

    End Sub

    Public Shared Sub Main(ByVal args() As String)

      If args.Length < 2 Then
        showUsage()
      Else
        makeFileRequest(args(0), Integer.Parse(args(1)))
        writeToFile()
      End If

    End Sub 'Main

  End Class 'TestGetRequestStream



End Module

End Namespace


[C#] 

// This example creates or opens a text file and stores a string in it. 
// Both the file and the string are passed by the user.
// Note. For this program to work, the folder containing the test file
// must be shared, with its permissions set to allow write access. 

using System.Net;
using System;
using System.IO;
using System.Text;

namespace Mssc.PluggableProtocols.File
{
  class TestGetRequestStream
  {
    private static FileWebRequest myFileWebRequest;

    private static void showUsage()
    {
      Console.WriteLine("\nPlease enter file name and timeout :");
      Console.WriteLine("Usage: cs_getrequeststream <systemname>/<sharedfoldername>/<filename> timeout");
      Console.WriteLine("Example: cs_getrequeststream ngetrequestrtream() ndpue/temp/hello.txt  1000");
      Console.WriteLine("Small time-out values (for example, 3 or less) cause a time-out exception.");
    }

    private static void makeFileRequest(string fileName, int timeout)
    {
      try
      {
        // Create a Uri object. 
        Uri myUrl=new Uri("file://" + fileName);
        // Create a FileWebRequest object.
        myFileWebRequest = (FileWebRequest)WebRequest.CreateDefault(myUrl);
        // Set the time-out to the value selected by the user.
        myFileWebRequest.Timeout = timeout;
        // Set the Method property to POST  
        myFileWebRequest.Method="POST";
      }
      catch(WebException e)
      {
        Console.WriteLine("WebException: "+e.Message);
      }
      catch(UriFormatException e)
      {
        Console.WriteLine("UriFormatWebException: "+e.Message);
      }
    }

    private static void writeToFile()
    {
      try
      {
        // Enter the string to write to the file.
        Console.WriteLine("Enter the string you want to write:");
        string userInput = Console.ReadLine();
        // Convert the string to a byte array.
        ASCIIEncoding encoder = new ASCIIEncoding();
        byte[] byteArray = encoder.GetBytes(userInput);    
        // Set the ContentLength property.
        myFileWebRequest.ContentLength=byteArray.Length;  
        string contentLength = myFileWebRequest.ContentLength.ToString();
        Console.WriteLine("\nThe content length is {0}.", contentLength);  
        // Get the file stream handler to write to the file.
        Stream readStream=myFileWebRequest.GetRequestStream();      

        // Write to the file stream. 
        // Note.  For this to work, the file must be accessible
        // on the network. This can be accomplished by setting the property
        // sharing of the folder containg the file. 
        // FileWebRequest.Credentials property cannot be used for this purpose.
        readStream.Write(byteArray,0,userInput.Length);

        Console.WriteLine("\nThe String you entered was successfully written to the file.");  

        readStream.Close();

      }
      catch(WebException e)
      {
        Console.WriteLine("The WebException: "+e.Message);
      }
      catch(UriFormatException e)
      {
        Console.WriteLine("The UriFormatWebException: "+e.Message);
      }
    }

    public static void Main(String[] args)
    {
      if (args.Length < 2)
        showUsage();
      else
      {
        makeFileRequest(args[0], int.Parse(args[1]));
        writeToFile();
      }
    }
  }
}

[C++] 

// This program creates or open a text file in which it stores a string.
// Both file and string are passed by the user.
// Note. In order for this program to work, the folder containing the test file
// must be shared with its permissions set to allow write access.

#using <mscorlib.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Net;

__gc class TestGetRequestStream {
private:
   static FileWebRequest*  myFileWebRequest;

   static void showUsage() {
      Console::WriteLine(S"\nPlease enter file name and timeout :");

      Console::WriteLine(S"Usage: cs_getrequeststream <systemname>/<sharedfoldername>/<filename> timeout");
      Console::WriteLine(S"Example: cs_getrequeststream ndpue/temp/hello.txt 1000");
      Console::WriteLine(S"Small timeout values (for instance 3 or less) cause a timeout exception.");
   }

   static void makeFileRequest(String* fileName, int timeout) {
      try {
         // Create a Uri object.
         Uri* myUrl = new Uri(String::Format(S"file://{0}", fileName));
         // Create a FileWebRequest object.
         myFileWebRequest = dynamic_cast<FileWebRequest*>(WebRequest::CreateDefault(myUrl));
         // Set the timeout to the value selected by the user.
         myFileWebRequest->Timeout = timeout;
         // Set the Method property to POST
         myFileWebRequest->Method=S"POST";
      } catch (WebException* e) {
         Console::WriteLine(S"WebException: {0}", e->Message);
      } catch (UriFormatException* e) {
         Console::WriteLine(S"UriFormatWebException: {0}", e->Message);
      }
   }

   static void writeToFile() {
      try {
         // Enter the string to write into the file.
         Console::WriteLine(S"Enter the string you want to write:");
         String* userInput = Console::ReadLine();
         // Convert the string to Byte array.
         ASCIIEncoding* encoder = new ASCIIEncoding();
         Byte byteArray[] = encoder->GetBytes(userInput);
         // Set the ContentLength property.
         myFileWebRequest->ContentLength=byteArray->Length;
         String* contentLength = myFileWebRequest->ContentLength.ToString();
         Console::WriteLine(S"\nThe content length is {0}.", contentLength);
         // Get the file stream handler to write into the file.
         Stream* readStream=myFileWebRequest->GetRequestStream();

         // Write to the file stream.
         // Note. In order for this to work the file must be accessible
         // on the network. This can be accomplished by setting the property
         // sharing of the folder containg the file. The permissions
         // can be set so everyone can modify the file.
         // FileWebRequest::Credentials property cannot be used for this purpose.
         readStream->Write(byteArray, 0, userInput->Length);

         Console::WriteLine(S"\nThe String you entered was successfully written into the file.");

         readStream->Close();

      } catch (WebException* e) {
         Console::WriteLine(S"The WebException: {0}", e->Message);
      } catch (UriFormatException* e) {
         Console::WriteLine(S"The UriFormatWebException: {0}", e->Message);
      }
   }

public:
   static void Main() {
      String* args[] = Environment::GetCommandLineArgs();
      if (args->Length < 3)
         showUsage();
      else {
         makeFileRequest(args[1], Int32::Parse(args[2]));
         writeToFile();
      }
   }
};

int main()
{
   TestGetRequestStream::Main();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Net

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System (System.dll 内)

参照

FileWebRequest メンバ | System.Net 名前空間 | File