Difference between revisions of "Io.open"

From GiderosMobile
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
<languages />
+
'''Available since:''' Gideros 2011.6<br/>
'''<translate>Available since</translate>:''' Gideros 2011.6<br/>
+
'''Class:''' [[io]]<br/>
'''<translate>Class</translate>:''' [[Special:MyLanguage/io|io]]<br/>
 
=== <translate>Description</translate> ===
 
<translate>This function opens a file, in the mode specified in the string mode. It returns a new file handle, or, in case of errors, nil plus an error message.
 
  
 +
=== 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)
 +
</syntaxhighlight>
  
The mode string can be any of the following:
 
  
"r": read mode (the default);
+
The '''mode''' string can be any of the following:
"w": write mode;
+
*"r": read mode (the default)
"a": append mode;
+
*"w": write mode
"r+": update mode, all previous data is preserved;
+
*"a": append mode
"w+": update mode, all previous data is erased;
+
*"r+": update mode, all previous data is preserved
"a+": append update mode, previous data is preserved, writing is only allowed at the end of file.
+
*"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.</translate>
+
The '''mode''' string can also have a ''''b'''' at the end, which is needed in some systems to open the file in binary mode.
<source lang="lua">
+
 
(file) = io.open(filename,mode)
+
This string is exactly what is used in the standard C function fopen.
</source>
+
 
=== <translate>Parameters</translate> ===
+
=== Parameters ===
'''filename''': (string) <translate>filename to open</translate> <br/>
+
'''filename''': (string) filename to open<br/>
'''mode''': (string) <translate>mode in which to open the file</translate> '''optional'''<br/>
+
'''mode''': (string) mode in which to open the file '''optional''' (default = "r")<br/>
=== <translate>Return values</translate> ===
+
 
'''<translate>Returns</translate>''' (file) <translate>file object</translate><br/>
+
=== Return values ===
 +
'''Returns''' (file) file object<br/>
 +
 
 +
=== 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
 +
</syntaxhighlight>
 +
 
 +
{{Io}}

Latest revision as of 15:31, 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.

(file) = io.open(filename, mode)


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

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