|
src_stream - stream to copy from dest_stream - stream to copy to buffer_size (optional) - size of the chunks copied at a time, in bytes, from 1 to 1048576; 16384 (default) |
|
Copies everything from one stream to another. Both ends can be file streams or TCP streams, which makes this a one-liner for jobs that would otherwise need a read/write loop: duplicate a file (ReadFile in, WriteFile out), download data from a TCP connection into a file, or push a file out over the network. Copying runs until the source ends - for a TCP source that means until the other side closes the connection, and reads obey the TCPTimeouts limit, so the call can take a while on a slow link. The buffer size just tunes how much is moved per gulp; the default is fine for almost everything. A value outside 1 to 1048576 raises a runtime error. See also: ReadFile, WriteFile, OpenTCPStream, ReadBytes, WriteBytes. |
; CopyStream Example
; ------------------
; Write a small save file that we can duplicate
source_name$="copystream_source.txt"
backup_name$="copystream_backup.txt"
out=WriteFile(source_name$)
WriteLine out,"hero=Blitz"
WriteLine out,"hp=250"
WriteLine out,"score=1234567"
CloseFile out
Print "Wrote "+source_name$
; CopyStream reads everything from one stream and writes it to
; another - here it duplicates the whole file in one call.
; It works with any streams: files, TCP streams and so on.
src=ReadFile(source_name$)
dest=WriteFile(backup_name$)
CopyStream src,dest
CloseFile dest
CloseFile src
Print "Copied it to "+backup_name$+" with CopyStream"
; Prove the backup matches by printing its contents
Print ""
Print "Contents of the backup:"
in=ReadFile(backup_name$)
While Not Eof(in)
Print " "+ReadLine$(in)
Wend
CloseFile in
; Tidy up the files this example created
DeleteFile source_name$
DeleteFile backup_name$
Print ""
Print "Press any key to close the example"
WaitKey
End