Latest web development tutorials

Lua fichier I / O

Lua I / O bibliothèques pour les fichiers de lecture et de traitement. Divisé en motifs simples (comme C), le mode plein.

  • Mode simple (modèle simple) dispose d'un fichier d'entrée courant et un fichier de sortie de courant, et de fournir à ces opérations liées aux fichiers.
  • Mode complet (modèle complet) en utilisant un descripteur de fichier externe pour atteindre. Il est dans un visage sous la forme d'un objet, toutes les opérations de fichiers seront définis comme une méthode de descripteurs de fichiers

En mode simple de faire des opérations de fichiers simples lorsque plus approprié. Mais après une opération de fichier avancé, le modèle simple semble être insuffisante. Par exemple lors de la lecture de cette opération plusieurs fichiers, utilisez le mode Full est plus approprié.

La déclaration d'opération de fichier ouvert est la suivante:

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

Mode de valeur sont:

mode description
r Ouvert en lecture seule, le fichier doit exister.
w Ouvrez le fichier en écriture seule, si le fichier existe, la longueur du fichier est effacé à 0, qui est, le contenu du fichier disparaîtront. Si le fichier n'existe pas, créez le fichier.
un Dans le fichier en écriture seule supplémentaire est ouverte. Si le fichier n'existe pas, la mise en place du fichier, si le fichier existe, les données d'écriture sera ajouté à la fin du fichier, le contenu du fichier d'origine seront conservées. (Caractère EOF réservé)
r + La lecture et l'écriture pour ouvrir un fichier, le fichier doit exister.
w + Ouvrir pour lire et écrire des fichiers, si le fichier existe, la longueur du fichier de zéro clair que le contenu du fichier disparaît. Si le fichier n'existe pas, créez le fichier.
a + Et un semblable, mais ce fichier est lisible et inscriptible
b Le mode binaire, si le fichier est un fichier binaire, vous pouvez ajouter b
+ Sign indique un fichier peut lire et écrire

simple mode

Mode simple en utilisant la norme E / S ou utiliser un fichier d'entrée courant et un fichier de sortie de courant.

Ce qui suit est le code de fichier file.lua, opération fichier test.lua (si vous n'avez pas besoin pour créer le fichier), comme suit:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 设置默认输入文件为 test.lua
io.input(file)

-- 输出文件第一行
print(io.read())

-- 关闭打开的文件
io.close(file)

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 设置默认输出文件为 test.lua
io.output(file)

-- 在文件最后一行添加 Lua 注释
io.write("--  test.lua 文件末尾注释")

-- 关闭打开的文件
io.close(file)

Mise en œuvre du code ci-dessus, vous trouverez que la première ligne d'informations test.ua fichier de sortie et la dernière ligne dans le fichier ajouter lua commentaires. Je suis ici en tant que sortie est:

-- test.lua 文件

Dans l'exemple ci-dessus, nous avons utilisé io "x", dans laquelle io.read (), nous ne disposons pas des paramètres, le paramètre peut être l'un de la table suivante:

mode description
"* N" Un numéro est lu et l'a retourné. Exemple: file.read ( "* n")
"* A" Lire l'intégralité du fichier à partir de son emplacement actuel. Exemple: file.read ( "* a")
"* L" (par défaut) Lit la ligne suivante à la fin du fichier (EOF) au retourne nil. Exemple: file.read ( "* l")
nombre Retourne un nombre spécifié de caractères dans la chaîne, ou lorsque EOF retourne nil. Exemple: file.read (5)

D'autres méthodes sont io:

  • io.tmpfile (): retourne un handle vers le fichier temporaire, le fichier est ouvert en mode de mise à jour automatiquement supprimées lorsque la fin du programme

  • io.type (fichier): détecter si un fichier obj poignées disponibles

  • io.flush (): écrire tampon toutes les données dans le fichier

  • io.lines (nom de fichier facultatif): Renvoie une fonction itérateur, chaque appel sera obtenir une ligne dans le fichier, lorsque la fin du fichier, il sera de retour à zéro, mais ne ferme pas le fichier


mode plein

Habituellement, nous devons traiter plusieurs fichiers en même temps. Nous avons besoin d'utiliser le fichier: nom_fonction à la place des méthodes io.function_name. L'exemple suivant montre le même fichier en même temps que:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

Mise en œuvre du code ci-dessus, vous trouverez que la première ligne d'informations test.ua fichier de sortie et la dernière ligne dans le fichier ajouter lua commentaires. Je suis ici en tant que sortie est:

-- test.lua 文件

lire les paramètres compatibles avec le mode simple.

Autres méthodes:

  • fichier: chercher ( d' où option, optionoffset): définir et récupérer la position actuelle du fichier, le succès, renvoie la position finale du fichier (en octets), échoue nil plus un message d'erreur est renvoyé. les valeurs des paramètres D'où peuvent être:

    • "Set": Dès le début du fichier
    • "Cur": De la position actuelle [par défaut]
    • "End": à partir de la fin du fichier
    • offset: La valeur par défaut est 0
    Sans fichier de paramètres: seek () retourne l'emplacement actuel, fichier: seek ( "set") est destiné à l'en-tête de fichier, le fichier: seek ( «fin») pour localiser la fin du fichier et retourne la taille du fichier
  • fichier: flush (): écriture tampon toutes les données dans le fichier

  • io.lines (nom de fichier en option):ouvrir le mode de lecture de fichier nom de fichier spécifié et renvoie une fonction itérateur, chaque appel déposera une ligne, lorsque la fin du fichier, il sera de retour à zéro, et fermer automatiquement le fichier.
    Si les paramètres de ceinture io.lines () <=> io.input (): lignes (); le dispositif d'entrée par défaut pour lire le contenu, mais la fin ne ferme pas le fichier, comme

    for line in io.lines("main.lua") do
    
      print(line)
    
      end
    

L'exemple suivant utilise rechercher des méthodes pour localiser le fichier avant-dernier poste 25 et utiliser la méthode de lecture * un paramètre, lire le fichier entier de l'emplacement actuel (l'avant-dernière position 25).

-- 以只读方式打开文件
file = io.open("test.lua", "r")

file:seek("end",-25)
print(file:read("*a"))

-- 关闭打开的文件
file:close()

Mon résultat est sortie ici:

st.lua 文件末尾--test