MoneyWorks Manual
File_Open (path [, mode="r"])
Result Type: A file handle or NULL
Definition: Opens an existing file or, if the mode is "w"
or "a"
, creates a new file. On success, a file handle is returned which you can use with the other File_
functions, otherwise a value of NULL is returned. When creating a new file, any existing file at the given path is replaced. File handles may be compared to 0 but are otherwise opaque.
The path
may be a fully-qualified path (but see note below), or if it is a simple file name or partial path it will be assumed to be located withing the default script files directory.
If path
is the empty string, a file open/save panel is presented to get the file location. If the user cancels this dialog, the return value of the function is 0.
valid modes:
"r"
Open file for reading (the default)"w"
Truncate to zero length or create file for writing."a"
Append; open or create file for writing at end-of-file."r+"
Open file for update (reading and writing).
Example:
let fd = File_Open("a file in the MoneyWorks Automation dir.txt") if fd <> NULL let content = File_read(fd) // read the entire file File_Close(fd) endif
Default script files directory and safe paths
The default location for files created by scripts (where a fully-qualified path name is not supplied) is a folder named "Automation Files" inside the user's app support folder. This folder will be created automatically if it does not exist.
The user can specify a list of safe directories in their application preferences, the first of which will be used as the default location for partial paths supplied to `File_Open()`. If no directories are specified, the default location (as above) is used.
If you supply a fully-qualified path (beginning at root), it must resolve to a directory that is one of the default "safe" directories, or to a directory that the user has added to the safe script access directory list in their application preferences. Accessing a path that is not designated safe will result in your script receiving a privilege violation error (so you should never attempt to access unsafe paths).
The default "safe" directories are:
- the `Automation Files` directory in the application support folder (open it with Help -> Support Info -> Automation Files). This is the new default location s of v9.1.3. Otherwise the `MoneyWorks Automation` directory in ~/Desktop (if the automation files folder was created in MoneyWorks 9.1.2 or earlier)
- the user's system-defined temp directory (this is the default location for creating files via `DoForm()` and `DoReport()`.
- the custom plugins directory (excluding the `Scripts` subdirectory)
- the standard plugins directory (excluding the `Scripts` and `Externals` subdirectories)
- Any path specified by the user in an Open or Save panel.
On Windows, you can't access files with file extensions that denote executable files.
Note: If you change the safe paths in the app preferences, make sure the first safe path is a writeable directory. Do not make the first path C:\ on Windows because that is not writeable, and many scripts may fail when they try to create files in that location.
Availability: available within MWScript handlers.
See Also:
AddSafePath: UI to add a safe path to the preferences
CreateFolder: Create a new folder
File_Close: File functions for creating/reading/writing text files
File_GetLength: File length in bytes
File_GetMark: Get current read/write position
File_Move: Rename/move a file
File_Path: Get the full path of an open file
File_Read: Read text from current position
File_ReadLine: Read to end of line from current position
File_SetMark: Set Current read/write position
File_Write: Write text at current position
WriteToTempFile: Create a temp file containing the string