本文整理汇总了C#中FileAction.ToString方法的典型用法代码示例。如果您正苦于以下问题:C# FileAction.ToString方法的具体用法?C# FileAction.ToString怎么用?C# FileAction.ToString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileAction
的用法示例。
在下文中一共展示了FileAction.ToString方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PutFile
/// <summary>
/// Uploads stream data specified in the inputStream parameter to the remote FTP server.
/// </summary>
/// <param name="inputStream">Any open stream object on the local client machine.</param>
/// <param name="remotePath">Filename or path and filename of the file stored on the remote FTP server.</param>
/// <param name="action">The type of put action taken.</param>
/// <remarks>
/// The stream is uploaded to the current working directory on the remote server. The remotePath
/// parameter is used to specify the path and file name used to store the file on the remote server.
/// Note that some FTP servers will not accept a full path. On those systems you must navigate to
/// the directory you wish to put the file using with the ChangeDirectory() or ChangeDirectoryMultiPath()
/// method.
/// </remarks>
/// <seealso cref="PutFileAsync(string, string, FileAction)"/>
/// <seealso cref="PutFileUnique(string)"/>
/// <seealso cref="GetFile(string, string, FileAction)"/>
/// <seealso cref="GetFileAsync(string, string, FileAction)"/>
/// <seealso cref="MoveFile"/>
/// <seealso cref="FxpCopy"/>
/// <seealso cref="FxpCopyAsync"/>
public void PutFile(Stream inputStream, string remotePath, FileAction action)
{
if (inputStream == null)
throw new ArgumentNullException("inputStream");
if (!inputStream.CanRead)
throw new ArgumentException("must be readable", "inputStream");
if (remotePath == null)
throw new ArgumentNullException("remotePath");
if (remotePath.Length == 0)
throw new ArgumentException("must contain a value", "remotePath");
if (action == FileAction.None)
throw new ArgumentOutOfRangeException("action", "must contain a value other than 'Unknown'");
WriteToLog(String.Format("Action='PutFile';Status='TransferBegin';RemotePath='{0}';FileAction='{1}'", remotePath, action.ToString()));
try
{
switch (action)
{
case FileAction.CreateOrAppend:
base.TransferData(TransferDirection.ToServer, new FtpRequest(base.CharacterEncoding, FtpCmd.Appe, remotePath), inputStream);
break;
case FileAction.CreateNew:
if (Exists(remotePath))
{
throw new FtpException("Cannot overwrite existing file when action FileAction.CreateNew is specified.");
}
base.TransferData(TransferDirection.ToServer, new FtpRequest(base.CharacterEncoding, FtpCmd.Stor, remotePath), inputStream);
break;
case FileAction.Create:
base.TransferData(TransferDirection.ToServer, new FtpRequest(base.CharacterEncoding, FtpCmd.Stor, remotePath), inputStream);
break;
case FileAction.Resume:
// get the size of the file already on the server (in bytes)
long remoteSize = GetFileSize(remotePath);
// if the files are the same size then there is nothing to transfer
if (remoteSize == inputStream.Length)
return;
// transfer file to the server
base.TransferData(TransferDirection.ToServer, new FtpRequest(base.CharacterEncoding, FtpCmd.Stor, remotePath), inputStream, remoteSize);
break;
case FileAction.ResumeOrCreate:
if (Exists(remotePath))
PutFile(inputStream, remotePath, FileAction.Resume);
else
PutFile(inputStream, remotePath, FileAction.Create);
break;
}
}
catch (FtpException fex)
{
WriteToLog(String.Format("Action='PutFile';Status='TransferError';RemotePath='{0}';FileAction='{1}';ErrorMessage='{2}'", remotePath, action.ToString(), fex.Message));
throw new FtpDataTransferException(String.Format("An error occurred while putting fileName '{0}'.", remotePath), base.LastResponse, fex);
}
WriteToLog(String.Format("Action='PutFile';Status='TransferSuccess';RemotePath='{0}';FileAction='{1}'", remotePath, action.ToString()));
}
示例2: PutFile
/// <summary>
/// Uploads stream data specified in the inputStream parameter to the remote FTP server.
/// </summary>
/// <param name="inputStream">Any open stream object on the local client machine.</param>
/// <param name="remotePath">Filename or path and filename of the file stored on the remote FTP server.</param>
/// <param name="action">The type of put action taken.</param>
/// <remarks>
/// The stream is uploaded to the current working directory on the remote server. The remotePath
/// parameter is used to specify the path and file name used to store the file on the remote server.
/// Note that some FTP servers will not accept a full path. On those systems you must navigate to
/// the directory you wish to put the file using with the ChangeDirectory() or ChangeDirectoryMultiPath()
/// method.
/// </remarks>
/// <seealso cref="PutFileAsync(string, string, FileAction)"/>
/// <seealso cref="PutFileUnique(string)"/>
/// <seealso cref="GetFile(string, string, FileAction)"/>
/// <seealso cref="GetFileAsync(string, string, FileAction)"/>
/// <seealso cref="MoveFile"/>
/// <seealso cref="FxpCopy"/>
/// <seealso cref="FxpCopyAsync"/>
public void PutFile(Stream inputStream, string remotePath, FileAction action)
{
if (inputStream == null)
throw new ArgumentNullException("inputStream");
if (!inputStream.CanRead)
throw new ArgumentException("must be readable", "inputStream");
if (remotePath == null)
throw new ArgumentNullException("remotePath");
if (remotePath.Length == 0)
throw new ArgumentException("must contain a value", "remotePath");
if (action == FileAction.None)
throw new ArgumentOutOfRangeException("action", "must contain a value other than 'Unknown'");
// set the inputStream if the user supplied it pointing to the end of the stream
if (inputStream.CanSeek && inputStream.Position == inputStream.Length)
inputStream.Position = 0;
WriteToLog(String.Format("Action='PutFile';Status='TransferBegin';RemotePath='{0}';FileAction='{1}'", remotePath, action.ToString()));
if (IsTranferProgressEventSet() && inputStream.CanSeek)
{
// set the transfer size so we can do some calc on percentage completed
// in the TransferBytes() method of the base class
SetTransferSize(inputStream.Length);
}
try
{
switch (action)
{
case FileAction.CreateOrAppend:
base.TransferData(TransferDirection.ToServer, new FtpsRequest(base.Encoding, FtpsCmd.Appe, remotePath), inputStream);
break;
case FileAction.CreateNew:
if (Exists(remotePath))
{
throw new FtpsException("Cannot overwrite existing file when action FileAction.CreateNew is specified.");
}
base.TransferData(TransferDirection.ToServer, new FtpsRequest(base.Encoding, FtpsCmd.Stor, remotePath), inputStream);
break;
case FileAction.Create:
base.TransferData(TransferDirection.ToServer, new FtpsRequest(base.Encoding, FtpsCmd.Stor, remotePath), inputStream);
break;
case FileAction.Resume:
if (!base.Features.Contains(FtpsCmd.Rest, "STREAM"))
throw new FtpsCommandNotSupportedException("Cannot resume file transfer.", "REST STREAM");
// get the file size for a resume
long remoteSize;
if (!TryGetFileSize(remotePath, out remoteSize))
throw new FtpsException("unable to determine file size for resume transfer");
// if the files are the same size then there is nothing to transfer
if (remoteSize == inputStream.Length)
return;
// transfer file to the server
base.TransferData(TransferDirection.ToServer, new FtpsRequest(base.Encoding, FtpsCmd.Stor, remotePath), inputStream, remoteSize);
break;
case FileAction.ResumeOrCreate:
// if the remote file exists then do a resume otherwise do a create
if (Exists(remotePath))
{
PutFile(inputStream, remotePath, FileAction.Resume);
}
else
{
PutFile(inputStream, remotePath, FileAction.Create);
}
break;
}
}
catch (FtpsException fex)
{
WriteToLog(String.Format("Action='PutFile';Status='TransferError';RemotePath='{0}';FileAction='{1}';ErrorMessage='{2}'", remotePath, action.ToString(), fex.Message));
throw new FtpsDataTransferException(String.Format("An error occurred while putting fileName '{0}'.", remotePath), base.LastResponse, fex);
}
WriteToLog(String.Format("Action='PutFile';Status='TransferSuccess';RemotePath='{0}';FileAction='{1}'", remotePath, action.ToString()));
}
示例3: GetFile
/// <summary>
/// Retrieves a remote file from the FTP server and writes the data to a local file
/// specfied in the localPath parameter.
/// </summary>
/// <remarks>
/// Note that some FTP servers will not accept a full path. On those systems you must navigate to
/// the directory you wish to get the file using with the ChangeDirectory() or ChangeDirectoryMultiPath()
/// method.
/// </remarks>
/// <param name="remotePath">A path and/or file name to the remote file.</param>
/// <param name="localPath">A fully qualified local path to a file on the local machine.</param>
/// <param name="action">The type of action to take.</param>
/// <seealso cref="GetFileAsync(string, string, FileAction)"/>
/// <seealso cref="PutFile(string, string, FileAction)"/>
/// <seealso cref="PutFileAsync(string, string, FileAction)"/>
/// <seealso cref="MoveFile"/>
/// <seealso cref="FxpCopy"/>
/// <seealso cref="FxpCopyAsync"/>
public void GetFile(string remotePath, string localPath, FileAction action)
{
if (remotePath == null)
throw new ArgumentNullException("remotePath");
if (remotePath.Length == 0)
throw new ArgumentException("must contain a value", "remotePath");
if (localPath == null)
throw new ArgumentNullException("localPath");
if (localPath.Length == 0)
throw new ArgumentException("must contain a value", "localPath");
if (action == FileAction.None)
throw new ArgumentOutOfRangeException("action", "must contain a value other than 'Unknown'");
localPath = CorrectLocalPath(localPath);
WriteToLog(String.Format("Action='GetFile';Status='TransferBegin';LocalPath='{0}';RemotePath='{1}';FileAction='{1}'", localPath, remotePath, action.ToString()));
FtpRequest request = new FtpRequest(base.CharacterEncoding, FtpCmd.Retr, remotePath);
try
{
switch (action)
{
case FileAction.CreateNew:
// create a file stream to stream the file locally to disk that only creates the file if it does not already exist
using (Stream localFile = File.Open(localPath, FileMode.CreateNew))
{
base.TransferData(TransferDirection.ToClient, request, localFile);
}
break;
case FileAction.Create:
// create a file stream to stream the file locally to disk
using (Stream localFile = File.Open(localPath, FileMode.Create))
{
base.TransferData(TransferDirection.ToClient, request, localFile);
}
break;
case FileAction.CreateOrAppend:
// open the local file
using (Stream localFile = File.Open(localPath, FileMode.OpenOrCreate))
{
// set the file position to the end so that any new data will be appended
localFile.Position = localFile.Length;
base.TransferData(TransferDirection.ToClient, request, localFile);
}
break;
case FileAction.Resume:
using (Stream localFile = File.Open(localPath, FileMode.Open))
{
// get the size of the file already on the server (in bytes)
long remoteSize = GetFileSize(remotePath);
// if the files are the same size then there is nothing to transfer
if (localFile.Length == remoteSize)
return;
base.TransferData(TransferDirection.ToClient, request, localFile, localFile.Length - 1);
}
break;
case FileAction.ResumeOrCreate:
if (File.Exists(localPath) && (new FileInfo(localPath)).Length > 0)
GetFile(remotePath, localPath, FileAction.Resume);
else
GetFile(remotePath, localPath, FileAction.Create);
break;
}
}
catch (Exception ex)
{
WriteToLog(String.Format("Action='GetFile';Status='TransferError';LocalPath='{0}';RemotePath='{1}';FileAction='{1}';ErrorMessage='{2}", localPath, remotePath, action.ToString(), ex.Message));
throw new FtpException(String.Format("An unexpected exception occurred while retrieving file '{0}'.", remotePath), base.LastResponse, ex);
}
WriteToLog(String.Format("Action='GetFile';Status='TransferSuccess';LocalPath='{0}';RemotePath='{1}';FileAction='{1}'", localPath, remotePath, action.ToString()));
}
示例4: GetFile
/// <summary>
/// Retrieves a remote file from the FTP server and writes the data to a local file
/// specfied in the localPath parameter.
/// </summary>
/// <remarks>
/// Note that some FTP servers will not accept a full path. On those systems you must navigate to
/// the directory you wish to get the file using with the ChangeDirectory() or ChangeDirectoryMultiPath()
/// method.
/// </remarks>
/// <param name="remotePath">A path and/or file name to the remote file.</param>
/// <param name="localPath">A fully qualified local path to a file on the local machine.</param>
/// <param name="action">The type of action to take.</param>
/// <seealso cref="GetFileAsync(string, string, FileAction)"/>
/// <seealso cref="PutFile(string, string, FileAction)"/>
/// <seealso cref="PutFileAsync(string, string, FileAction)"/>
/// <seealso cref="MoveFile"/>
/// <seealso cref="FxpCopy"/>
/// <seealso cref="FxpCopyAsync"/>
public void GetFile(string remotePath, string localPath, FileAction action)
{
if (remotePath == null)
throw new ArgumentNullException("remotePath");
if (remotePath.Length == 0)
throw new ArgumentException("must contain a value", "remotePath");
if (localPath == null)
throw new ArgumentNullException("localPath");
if (localPath.Length == 0)
throw new ArgumentException("must contain a value", "localPath");
if (action == FileAction.None)
throw new ArgumentOutOfRangeException("action", "must contain a value other than 'Unknown'");
// if the transfer event is being subscribed or this is a resume action then get the file size
long remoteSize = -1;
if (IsTranferProgressEventSet() || action == FileAction.Resume)
{
// try to get the remote file size
TryGetFileSize(remotePath, out remoteSize);
// set the transfer size so we can do some calc on percentage completed
// in the TransferBytes() method of the base class
SetTransferSize(remoteSize);
}
localPath = CorrectLocalPath(localPath);
WriteToLog(String.Format("Action='GetFile';Status='TransferBegin';LocalPath='{0}';RemotePath='{1}';FileAction='{2}'", localPath, remotePath, action.ToString()));
FtpsRequest request = new FtpsRequest(base.Encoding, FtpsCmd.Retr, remotePath);
try
{
switch (action)
{
case FileAction.CreateNew:
// create a file stream to stream the file locally to disk that only creates the file if it does not already exist
using (Stream localFile = File.Open(localPath, FileMode.CreateNew))
{
TransferData(TransferDirection.ToClient, request, localFile);
}
break;
case FileAction.Create:
// create a file stream to stream the file locally to disk
using (Stream localFile = File.Open(localPath, FileMode.Create))
{
TransferData(TransferDirection.ToClient, request, localFile);
}
break;
case FileAction.CreateOrAppend:
// open the local file
using (Stream localFile = File.Open(localPath, FileMode.OpenOrCreate))
{
// set the file position to the end so that any new data will be appended
localFile.Position = localFile.Length;
TransferData(TransferDirection.ToClient, request, localFile);
}
break;
case FileAction.Resume:
if (!base.Features.Contains(FtpsCmd.Rest, "STREAM"))
throw new FtpsCommandNotSupportedException("Cannot resume file transfer." ,"REST STREAM");
using (Stream localFile = File.Open(localPath, FileMode.Open))
{
// make sure we have a valid file size
if (remoteSize == -1)
throw new FtpsException("unable to determine file size for resume transfer");
// if the files are the same size then there is nothing to transfer
if (localFile.Length == remoteSize)
return;
TransferData(TransferDirection.ToClient, request, localFile, localFile.Length - 1);
}
break;
case FileAction.ResumeOrCreate:
if (File.Exists(localPath) && (new FileInfo(localPath)).Length > 0)
GetFile(remotePath, localPath, FileAction.Resume);
else
GetFile(remotePath, localPath, FileAction.Create);
break;
}
//.........这里部分代码省略.........