Sfoglia il codice sorgente

SftpFileStream: In Append mode, create the remote file if it does not already exist.

SftpFileStream: In Append mode, create the remote file if it does not
already exist.
Fixes issue #266.
Gert Driesen 8 anni fa
parent
commit
f38c7ce3af

+ 2 - 2
src/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_Ctor_FileModeAppend_FileAccessWrite.cs

@@ -46,7 +46,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp
         protected override void SetupMocks()
         {
             SftpSessionMock.InSequence(MockSequence)
-                           .Setup(p => p.RequestOpen(_path, Flags.Write | Flags.Append, false))
+                           .Setup(p => p.RequestOpen(_path, Flags.Write | Flags.Append | Flags.CreateNewOrOpen, false))
                            .Returns(_handle);
             SftpSessionMock.InSequence(MockSequence)
                            .Setup(p => p.CalculateOptimalReadLength((uint) _bufferSize))
@@ -161,7 +161,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp
         [TestMethod]
         public void RequestOpenOnSftpSessionShouldBeInvokedOnce()
         {
-            SftpSessionMock.Verify(p => p.RequestOpen(_path, Flags.Write | Flags.Append, false), Times.Once);
+            SftpSessionMock.Verify(p => p.RequestOpen(_path, Flags.Write | Flags.Append | Flags.CreateNewOrOpen, false), Times.Once);
         }
 
         [TestMethod]

+ 1 - 1
src/Renci.SshNet/Sftp/SftpFileStream.cs

@@ -222,7 +222,7 @@ namespace Renci.SshNet.Sftp
             switch (mode)
             {
                 case FileMode.Append:
-                    flags |= Flags.Append;
+                    flags |= Flags.Append | Flags.CreateNewOrOpen;
                     break;
                 case FileMode.Create:
                     _handle = _session.RequestOpen(path, flags | Flags.Truncate, true);