2016-04-12 5 views
1

Мне нужно прочитать файл из местоположения SFTP с помощью сборки WinSCP .NET на C#. Я могу загрузить файл из местоположения SFTP в локальный путь и прочитать его. Но есть ли способ прочитать содержимое файла напрямую, не загружая его на локальный путь?Прочитать содержимое файла из местоположения SFTP с помощью WinSCP

Ниже приведен код загрузки. Но я не вижу вариант доступен не для чтения содержимого файла непосредственно в WinSCP ... что-то, как с помощью реакции, поток и т.д. ...

TransferOptions objTransferoptions = new Transferoptions() 
objTransferoptions.transfermode = Automatic 
Session objsession = new Session() 
objsession.Open() 
objsession.GetFiles(remotepath, localpath, false,objTransferoptions) 

Может кто-то пожалуйста, дайте мне знать, если это возможно, чтобы прочитать содержимое файла непосредственно от местоположения SFTP? Заранее спасибо!

EDIT:

Продлить на поставленный выше вопрос. Кто-нибудь может сказать мне, что можно скопировать файлы между удаленным местоположением SFTP (от удаленного места 1 до удаленного места 2 на том же SFTP-сервере).

Примечание: мне нужно скопировать файлы, а не перемещаться.

ответ

1

WinSCP .NET assembly не поддерживает «загрузку» содержимого удаленного файла в память.

Все, что вы можете сделать, это download the file в местное временное место и прочитать его в памяти оттуда.

using (Session session = new Session()) 
{ 
    // Connect 
    session.Open(sessionOptions); 

    // Download to a temporary folder 
    string localPath = Path.GetTempFileName(); 
    session.GetFiles(remotePath, localPath).Check(); 

    // Read the file contents 
    byte[] contents = File.ReadAllBytes(localPath); 

    // Delete the temporary file 
    File.Delete(localPath); 
} 
+0

Got it .. Спасибо вам !!! Но хотите знать, могу ли я скопировать файл с одного удаленного пути на другой удаленный путь на том же SFTP-сервере? Или мне нужно скопировать с удаленного пути 1 на локальный и снова локальный на удаленный путь 2? – user3859666

+0

См. [Как копировать/дублировать файл в другой каталог с помощью SFTP?] (Http://stackoverflow.com/q/28089821/850848) –

+0

Да .. Я использую Winscp, и я в порядке с Duplicate Dialog. Но могу ли я сделать это с кодом C#. Можете ли вы направить меня на некоторую ссылку на код, если это возможно. – user3859666