Hi,
Ok, So I looked at it and to achive what you want to to you need to use Open method instead of OpenWrite.
I tried to implemented OpenWrite method similar to File.OpenWrite.
So its behaviour is the same as if you were to use regular files.
I modified your code and ran this but received the same result.
client.HostKeyReceived += (s, e) =>
{
e.CanTrust = true;
};
client.Connect();//SftpFileStream _fileStream = client.OpenWrite("final.txt");//var _fileStream = client.Open("final.txt", FileMode.OpenOrCreate | FileMode.Truncate);
FileStream _fileStream = File.OpenWrite(@"final1.txt");
FileStream _localFileStream = File.Open(@"big.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);int transferred = 0;int totalToTransfer = 1495368;int lengthTransferred = 0;while (transferred < totalToTransfer)
{byte[] readBytes = newbyte[65536];
lengthTransferred = _localFileStream.Read(readBytes, 0, 65536);
_fileStream.Write(readBytes, 0, lengthTransferred);
transferred += lengthTransferred;
}
_localFileStream.Close();
_fileStream.Close();
//_fileStream = client.OpenWrite("final.txt");//_fileStream = client.Open("final.txt", FileMode.OpenOrCreate | FileMode.Truncate);//_fileStream = File.Open(@"final1.txt", FileMode.OpenOrCreate);
_fileStream = File.OpenWrite(@"final1.txt");
_localFileStream = File.Open(@"small.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
transferred = 0;
totalToTransfer = 128832;
lengthTransferred = 0;while (transferred < totalToTransfer)
{byte[] readBytes = newbyte[65536];
lengthTransferred = _localFileStream.Read(readBytes, 0, 65536);
_fileStream.Write(readBytes, 0, lengthTransferred);
transferred += lengthTransferred;
}
_localFileStream.Close();
_fileStream.Close();
}
If you like, you can use Open method where you can explicitly specify to truncate a new file.
Please let me know if you have any more questions or suggestions.
Thanks,
Oleg
OpenWrite