public IEnumerable <FileTransferInfo> GetFiles(string folder, string fileMask, bool recursive, string outputDirectory, bool deleteOnSuccess) { outputDirectory = outputDirectory.Replace('\\', '/'); if (!outputDirectory.EndsWith("/")) { outputDirectory += "/"; } FileTransferHelpers.CreateDirectory(outputDirectory); // download files foreach (var f in GetFileStreams(folder, fileMask, recursive)) { string newFile = null; // download file try { newFile = System.IO.Path.Combine(outputDirectory, System.IO.Path.GetFileName(f.FileName)); FileTransferHelpers.DeleteFile(newFile); using (var file = new FileStream(newFile, FileMode.Create, FileAccess.Write, FileShare.Delete, FileServiceConnectionInfo.DefaultWriteBufferSize)) { f.FileStream.CopyTo(file, FileServiceConnectionInfo.DefaultWriteBufferSize >> 2); } f.FileStream.Close(); f.FileStream = null; // check if we must remove file if (deleteOnSuccess && System.IO.File.Exists(newFile)) { client.DeleteFile(f.FileName); } _setStatus(true); break; } catch (Exception ex) { _setStatus(ex); Close(); FileTransferHelpers.DeleteFile(newFile); newFile = null; // delay in case of network error System.Threading.Thread.Sleep(Details.RetryWaitMs); // try to reopen Open(); } finally { if (f.FileStream != null) { f.FileStream.Close(); } } // check if file was downloaded if (newFile != null) { var info = new System.IO.FileInfo(newFile); if (info.Exists) { yield return(new FileTransferInfo(newFile, info.Length, info.CreationTime, info.LastWriteTime)); } } } }
protected void LinkButton1_ItemCommand(object sender, ListViewCommandEventArgs e) { string key = e.CommandArgument.ToString(); awsHelper.DeleteFile("", key); }