/// <summary> /// Copies a file from the phone to the PC /// </summary> void CopyFileFromPhone(string PathOnPC, string PathOnPhone, int ChunkSize) { DateTime StartTime = DateTime.Now; byte[] buffer = new byte[ChunkSize]; // Make sure the directory exists on the PC string DirectoryOnPC = Path.GetDirectoryName(PathOnPC); Directory.CreateDirectory(DirectoryOnPC); iPhoneFile SourceFile = iPhoneFile.OpenRead(this, PathOnPhone); FileStream DestinationFile = File.OpenWrite(PathOnPC); long TotalBytesRead = 0; int BytesRead = SourceFile.Read(buffer, 0, buffer.Length); while (BytesRead > 0) { DestinationFile.Write(buffer, 0, BytesRead); BytesRead = SourceFile.Read(buffer, 0, buffer.Length); TotalBytesRead += BytesRead; } DestinationFile.Flush(); DestinationFile.Close(); SourceFile.Close(); TimeSpan CopyLength = DateTime.Now - StartTime; WriteProgressLine(" ... Finished copying to '{1}' in {0:0.00} s", 100, CopyLength.TotalSeconds, PathOnPC); }
void CopyFileToPhone(string PathOnPC, string PathOnPhone, int ChunkSize) { DateTime StartTime = DateTime.Now; byte[] buffer = new byte[ChunkSize]; // Make sure the directory exists on the phone string DirectoryOnPhone = PathOnPhone.Remove(PathOnPhone.LastIndexOf('/')); CreateDirectory(DirectoryOnPhone); FileStream SourceFile = File.OpenRead(PathOnPC); iPhoneFile DestinationFile = iPhoneFile.OpenWrite(this, PathOnPhone); long ProgressInterval = Math.Max(buffer.Length, (SourceFile.Length / TransferProgressDivisor)); long NextProgressPrintout = ProgressInterval; long TotalBytesRead = 0; int BytesRead = SourceFile.Read(buffer, 0, buffer.Length); while (BytesRead > 0) { if (TotalBytesRead >= NextProgressPrintout) { NextProgressPrintout += ProgressInterval; if (OnGenericProgress != null) { int PercentDone = (int)((100 * TotalBytesRead) / SourceFile.Length); string Msg = "Transferred " + (SourceFile.Position / 1024) + " KB of " + (SourceFile.Length / 1024) + " KB"; OnGenericProgress(Msg, PercentDone); } else { Console.WriteLine(" ... Transferred " + (SourceFile.Position / 1024) + " KB of " + (SourceFile.Length / 1024) + " KB"); } } DestinationFile.Write(buffer, 0, BytesRead); BytesRead = SourceFile.Read(buffer, 0, buffer.Length); TotalBytesRead += BytesRead; } DestinationFile.Flush(); DestinationFile.Close(); SourceFile.Close(); TimeSpan CopyLength = DateTime.Now - StartTime; Console.WriteLine(" ... Finished copying to '{1}' in {0:0.00} s", CopyLength.TotalSeconds, PathOnPhone); }