Difference between revisions of "Io.open"

From GiderosMobile
m (Text replacement - "<source" to "<syntaxhighlight")
Line 5: Line 5:
 
=== Description ===
 
=== Description ===
 
This function opens a file in the specified mode. The function returns a new file handle, or nil plus an error message.
 
This function opens a file in the specified mode. The function returns a new file handle, or nil plus an error message.
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
(file) = io.open(filename, mode)
 
(file) = io.open(filename, mode)
 
</source>
 
</source>
Line 31: Line 31:
 
=== Example ===
 
=== Example ===
 
'''To copy a file'''
 
'''To copy a file'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
local function copy(src, dst)
 
local function copy(src, dst)
 
local srcf = io.open(src, "rb")
 
local srcf = io.open(src, "rb")

Revision as of 14:28, 13 July 2023

Available since: Gideros 2011.6
Class: io

Description

This function opens a file in the specified mode. The function returns a new file handle, or nil plus an error message. <syntaxhighlight lang="lua"> (file) = io.open(filename, mode) </source>


The mode string can be any of the following:

  • "r": read mode (the default)
  • "w": write mode
  • "a": append mode
  • "r+": update mode, all previous data is preserved
  • "w+": update mode, all previous data is erased
  • "a+": append update mode, previous data is preserved, writing is only allowed at the end of file

The mode string can also have a 'b' at the end, which is needed in some systems to open the file in binary mode.

This string is exactly what is used in the standard C function fopen.

Parameters

filename: (string) filename to open
mode: (string) mode in which to open the file optional (default = "r")

Return values

Returns (file) file object

Example

To copy a file <syntaxhighlight lang="lua"> local function copy(src, dst) local srcf = io.open(src, "rb") local dstf = io.open(dst, "wb") local size = 2^13 -- good buffer size (8K) while true do local block = srcf:read(size) if not block then break end dstf:write(block) end srcf:close() dstf:close() end </source>