From 540708e54075a9cf094a8756402acfc0da5059a8 Mon Sep 17 00:00:00 2001 From: Shikhar Bhushan Date: Sat, 12 May 2012 16:24:01 +0100 Subject: [PATCH] Provide a preference SFTPFileTransfer.setPreserveAttributes() to not set file attributes post upload or download. Should address issue #42 / pull request #43 --- .../net/schmizz/sshj/sftp/SFTPFileTransfer.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/sftp/SFTPFileTransfer.java b/src/main/java/net/schmizz/sshj/sftp/SFTPFileTransfer.java index 4e6f8de6..fd734285 100644 --- a/src/main/java/net/schmizz/sshj/sftp/SFTPFileTransfer.java +++ b/src/main/java/net/schmizz/sshj/sftp/SFTPFileTransfer.java @@ -38,11 +38,20 @@ public class SFTPFileTransfer private volatile LocalFileFilter uploadFilter; private volatile RemoteResourceFilter downloadFilter; + private volatile boolean preserveAttributes = true; public SFTPFileTransfer(SFTPEngine engine) { this.engine = engine; } + public boolean getPreserveAttributes() { + return preserveAttributes; + } + + public void setPreserveAttributes(boolean preserveAttributes) { + this.preserveAttributes = preserveAttributes; + } + @Override public void upload(String source, String dest) throws IOException { @@ -106,8 +115,8 @@ public class SFTPFileTransfer default: throw new IOException(remote + " is not a regular file or directory"); } - copyAttributes(remote, adjustedFile); - + if (getPreserveAttributes()) + copyAttributes(remote, adjustedFile); } private LocalDestFile downloadDir(final TransferListener listener, @@ -173,7 +182,8 @@ public class SFTPFileTransfer adjustedPath = uploadFile(listener.file(local.getName(), local.getLength()), local, remote); } else throw new IOException(local + " is not a file or directory"); - engine.setAttributes(adjustedPath, getAttributes(local)); + if (getPreserveAttributes()) + engine.setAttributes(adjustedPath, getAttributes(local)); } private String uploadDir(final TransferListener listener,