Mercurial > 510Connectbot
diff app/src/main/java/ch/ethz/ssh2/SFTPOutputStream.java @ 438:d29cce60f393
migrate from Eclipse to Android Studio
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 03 Dec 2015 11:23:55 -0800 |
parents | src/ch/ethz/ssh2/SFTPOutputStream.java@071eccdff8ea |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/src/main/java/ch/ethz/ssh2/SFTPOutputStream.java Thu Dec 03 11:23:55 2015 -0800 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2011 David Kocher. All rights reserved. + * Please refer to the LICENSE.txt for licensing details. + */ +package ch.ethz.ssh2; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * @version $Id: SFTPOutputStream.java 151 2014-04-28 10:03:39Z dkocher@sudo.ch $ + */ +public class SFTPOutputStream extends OutputStream { + + private SFTPFileHandle handle; + + /** + * Offset (in bytes) in the file to write + */ + private long writeOffset = 0; + + public SFTPOutputStream(SFTPFileHandle handle) { + this.handle = handle; + } + + /** + * Writes <code>len</code> bytes from the specified byte array + * starting at offset <code>off</code> to this output stream. + * The general contract for <code>write(b, off, len)</code> is that + * some of the bytes in the array <code>b</code> are written to the + * output stream in order; element <code>b[off]</code> is the first + * byte written and <code>b[off+len-1]</code> is the last byte written + * by this operation. + * + * @see SFTPClient#write(SFTPFileHandle, long, byte[], int, int) + */ + @Override + public void write(byte[] buffer, int offset, int len) throws IOException { + // We can just blindly write the whole buffer at once. + // if <code>len</code> > 32768, then the write operation will + // be split into multiple writes in SFTPv3Client#write. + handle.getClient().write(handle, writeOffset, buffer, offset, len); + writeOffset += len; + } + + @Override + public void write(int b) throws IOException { + byte[] buffer = new byte[1]; + buffer[0] = (byte) b; + handle.getClient().write(handle, writeOffset, buffer, 0, 1); + writeOffset += 1; + } + + public long skip(long n) { + writeOffset += n; + return n; + } + + @Override + public void close() throws IOException { + handle.getClient().closeFile(handle); + } +} \ No newline at end of file