Cara quando se fala "remoto", se remete a algo longícuo, um arquivo no seu computador não se caracteriza em arquivo remoto, seria remoto se fosse em rede, acessando por socket curl etc.
E a titulo de informação, existe inúmeros modos de se manipular arquivos, você mostro apenas o io.open ccm o argumento "r", só dentro dele existem mais 8 modos de manipulação (rb, r+b, w, wb, w+b, a, ab, a+b). Dentro da biblioteca io também há mais funções para manipulação.
E uma coisa muito importante que você deixou passar, SEMPRE que abrir um arquivo, feche após o uso, em sistemas como windows, o arquivo não poderá nem ser excluido por estar aberto.
-- abrindo o arquivo em modo de atualização
local file = io.open(file, "r+")
-- lendo todo o arquivo como string e salvando na variável str
local str = file:read("a*")
-- o arquivo ja foi salvo, não há mais a necessidade de mantê-lo aberto, então feche
file:close()


info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have
Ola galerinha.
Eu sempre percebi que usam muito o arquivo de texto para arquivo remotos.
Mesmo que não apresenta muita diferença entre a manipulação do XML E TXT e interessante aprender a manipular os dois corretamente.
O XML e mais usado para configurações e o arquivo de texto e mais usado para "guardar".
Existe outros arquivos remotos como a própria extensão lua onde suas tables e funções podem ser acessadas remotamente.
Um exemplo e sua pasta lib.
A melhor formula de procurar valores em um arquivo xml e usando funções para manipulação de strings.
Primeiro precisamos achar o arquivo xml.
Vamos declarar um variável local com o diretório do arquivo.
Aplicamos o modulo "r"(Obs: Existem outros módulos mais por enquanto utilizaremos este)
local dir = io.open("data/banana/tangerina.xml", "r")Acessamos a pasta "banana" e abrimos arquivos tangerina.xml.
O arquivo XML tinha salvo este texto.
Então se consideramos a configuração "beeki gosta da fruta Banana".
Então queremos ver em um script lua qual fruta gosta o beeki:
for i in events:read("*a"):gmatch('fruta="(.-)" quem gosta="Beeki"') doNão se assuste irei explicar.
O for serve para que ela se repita ou seja ela pode procurar outros valores(Se existir outros valores)
O string.gmatch procuras as linhas.
for i in events:read("*a"):gmatch('O QUE VEM ANTES DO QUE PROCURA(.-)O QUE VEM DEPOIS QUE VOCÊ PROCURA(Esta parte finaliza a busca)') doO sinal (.-) significa o valor que você quer procurar.
Alguns exemplos:
Quero todas as frutas no xml!
for i in events:read("*a"):gmatch('fruta="(.-)"') doQuem gosta de tangerina?
for i in events:read("*a"):gmatch('fruta="Tangerina" quem gosta = "(.-)"') doQuero os nomes das pessoas do xml!
for i in events:read("*a"):gmatch('quem gosta="(.-)"') doDiquinhas(dicas):
E protinho fim de tutorial.
Não sou bom em organização de tópicos
Obrigado aos usuários que foram acessados remotamente(Eu não pedi autorização)