3

WinSCP .NET Assembly (C#) を使用して SFTP ファイル転送プロジェクトを開発しています。

サーバー内のファイルを移動したい。コードは次のとおりです。

session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);
Console.WriteLine("Move File {0} to {1}", fileInfo.Name, server.DoneFilePath);

現在移動中のファイルがターゲット パスに存在する場合、そのファイルは移動されません。だから私はファイルの名前を変更して移動したい。

それを行う方法はありますか?

4

1 に答える 1

4

WinSCP がこれを自動的に実行できるかどうかを尋ねる場合、答えは「いいえ」です。

ファイルを移動する前に、ターゲット ファイルの存在を明示的に確認し、名前を変更する必要があります。

名前の変更と移動は、WinSCP .NET アセンブリ API の観点からは同じ操作であることに注意してください。したがって、両方にSession.MoveFileメソッドを使用します。

あなたの質問から、server.DoneFilePathがターゲット ディレクトリへのパス (スラッシュで終わる/) なのか、ターゲット ファイルへのパス (ファイル名で終わる) なのかは明確ではありません。ターゲット ディレクトリのみへのパスであると仮定します。

string doneFile = server.DoneFilePath + fileInfo.Name;
if (session.FileExists(doneFile))
{
    session.MoveFile(doneFile, doneFile  + ".bak");
}

// carry on with your move code:
session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);
于 2014-01-23T08:31:52.873 に答える