Files and Streams

File Names

Conventions for file names.

Most files used by the Wolfram System are completely system independent. .mx and .exe files are however system dependent. For these files, there is a convention that bundles of versions for different computer systems have names with forms such as name/(RefLink[$SystemID, paclet:ref/$SystemID])/name.

In general, when you refer to a file, the Wolfram System tries to resolve its name as follows:

If the name starts with !, the Wolfram Language treats the remainder of the name as an external command, and uses a pipe to this command.

If the name starts with http:// or https:// the Wolfram Language treats the name as a URL and reads the file from a web server.

If the name is handled by a registered stream method, the method will open the stream using the name.

If the name contains metacharacters used by your operating system, then the Wolfram Language passes the name directly to the operating system for interpretation.

Unless the file is to be used for input, no further processing on the name is done.

Unless the name given is an absolute file name under your operating system, the Wolfram Language will search each of the directories specified in the list (RefLink[$Path, paclet:ref/$Path]).

If what is found is a directory rather than a file, then the Wolfram Language will look for a file name/(RefLink[$SystemID, paclet:ref/$SystemID])/name.

For names of the form name` the following further translations are done in (RefLink[Get, paclet:ref/Get]) and related functions:

A file name.mx is used if it exists.

If name.mx is a directory, then name.mx/(RefLink[$SystemID, paclet:ref/$SystemID])/name.mx is used if it exists.

A file name.m is used if it exists.

If name is a directory, then the file name/init.m is used if it exists.

In (RefLink[Install, paclet:ref/Install]), name` is taken to refer to a file or directory named name.exe.

Streams

Types of streams.

Options for output streams.

You can test options for streams using (RefLink[Options, paclet:ref/Options]), and reset them using (RefLink[SetOptions, paclet:ref/SetOptions]).