ReadByteArray

ReadByteArray[src]

gives the contents of src as a ByteArray object.

ReadByteArray[src,n]

reads the first n bytes from src.

ReadByteArray[src,term]

reads until the termination condition term is satisfied.

Details and Options

  • In ReadByteArray[src,], src can be a file given as "filename" or File["filename"], an input-oriented stream such as InputStream or an external process with head ProcessObject.
  • ReadByteArray["file",] and ReadByteArray[File["file"],] will open "file" for reading if it is not already open. In this case, the file will be closed after reading if the default terminator, EndOfFile, is used.
  • The termination condition term can be any of the following:
  • nup to n bytes have been read
    ByteArray[]a literal sequence of bytes is encountered
    EndOfBufferavailable content is exhausted
    EndOfFilethe end of the source is reached (default)
    EndOfLinea byte sequence corresponding to ends of lines
    {term1,term2,}any of the termi
  • If the termination condition consists of a byte sequence, that sequence is simply dropped and is not returned as part of the byte array.
  • ReadByteArray[src] or ReadByteArray[src,EndOfFile] reads from the current position until a stream has ended or the external process providing input has terminated.
  • If ReadByteArray is called on a source of content that has already been exhausted, it returns EndOfFile.
  • ReadByteArray is a blocking function that by default will not return until it has read whatever it is specified to read.
  • With the option setting TimeConstraint->t, ReadByteArray waits at most t seconds, then returns whatever it has read by that time.
  • ReadByteArray[src,EndOfBuffer] does not block, and returns whatever is already available in the input buffer.

Examples

open allclose all

Basic Examples  (2)

Read in an image file as a byte array:

The byte array contains the contents of the file for further manipulation:

Export text to a file:

Read in the file as a byte array:

View the individual bytes:

Convert the bytes back to a string:

Scope  (5)

Read in a WXF file:

Read in the file, explicitly specifying the EndOfFile terminator:

Convert the data to expressions:

Read in the first line of text of Alice in Wonderland as an array of bytes:

Read the next line of text:

Close the file:

Read the first 70 bytes of the United States Constitution:

Convert the bytes to text:

Read until either 70 bytes have been read or an end of line is encountered:

Repeat the process:

Close the file:

Open a system shell using StartProcess:

Clear out any welcome text:

Write a command to the process that generates output:

Read the available output as a byte array:

Convert the bytes to a string and notice that it includes the end-of-line character:

Write the command to the process a second time:

This time, read until the end of line is reached:

The byte array no longer encodes an end of line:

Kill the process:

Open a socket connection:

Write a request to the socket:

Read until the byte sequence corresponding to GIF89 is read:

Convert the data in the HTTP header to text:

Read all remaining bytes:

Join the bytes with the GIF header and import the images:

Close the socket:

Options  (1)

TimeConstraint  (1)

Start a shell and clear the output it prints on startup:

Attempt to read 5 bytes, but force a return after 2 seconds with what has been obtained:

Write a command to the shell, causing it to print output:

Attempt another time-constrained read, which returns immediately with 5 bytes:

End the process:

Properties & Relations  (5)

ReadByteArray[src] is effectively equivalent to ByteArray[BinaryReadList[src]]:

ReadByteArray[src] is effectively equivalent to StringToByteArray[ReadString[src], "ISO8859-1"]:

ReadByteArray[src,n] reads n bytes at once:

BinaryRead[src] reads one byte at a time:

The data is the same as read in by ReadByteArray:

Close the stream:

ReadByteArray[src] is effectively equivalent to StringToByteArray[Import[src,"String"],"ISO8859-1"]:

ImportByteArray[ReadByteArray[src]] is effectively equivalent to Import[src]:

Introduced in 2018
 (11.3)