PT-BR/fileOpen

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

Abre um arquivo existente para leitura e gravação.


Post-it.png Nota: Para prevenir perdas de memórias, garanta que cada execução bem sucedida de fileOpen tenha um fileClose para fechar o arquivo aberto.
Tip-ptbr.png Dica: As funções que manipulam arquivos não devem ser utilizadas para implementar arquivos de configuração. É recomendado usar as funções XML.
Dialog-warning.png Aviso: A partir da versão 1.5.4 r10413, esta função vai falhar quando tentar acessar um arquivo de script de outro resource, até mesmo com a permissão general.ModifyOtherObjects concedida, que usa uma conexão mysql através de dbConnect quando database_credentials_protection estiver habilitado na configuração do servidor. Além disso, não será mais possível gravar no meta.xml, ele será aberto apenas em modo leitura.

Sintaxe

file fileOpen ( string filePath [, bool readOnly = false ])

Sintaxe POO(OOP) Não entendeu o que significa isso?

Nota: A função vai apenas tentar abrir o arquivo, não vai criá-lo.
Método: File(...)
ADICIONADO/ATUALIZADO NA VERSÃO 1.5.6 r11865:

Sintaxe POO(OOP) Não entendeu o que significa isso?

Nota: Esta é uma função estática abaixo da classe File. Usando File(...) vai abrir um arquivo caso existe, senão este será criado.
Método: File.open(...)


Argumentos necessários

  • filePath: O caminho do arquivo a ser criado seguindo o seguinte formato: ":resourceName/path". resourceName é o nome do resource do arquivo que vai estar lá, e path é o caminho do arquivo relativo ao diretório do resource.
Por exemplo, se existir um arquivo chamado coolObjects.txt no resource objectSearch, esse arquivo pode ser aberto de um outro resource dessa forma: fileOpen(":objectSearch/coolObjects.txt").
Se o arquivo está no resource atual, apenas o caminho do arquivo é necessário, ex.: <fileOpen("coolObjects.txt").

Argumento opcional

  • readOnly: Por padrão, o arquivo é aberto com acesso de leitura e gravação. Você pode especificar true para esse argumento se você quiser o acesso apenas para leitura.

Retorno

Se aberto com sucesso, retorna o arquivo (objeto-arquivo) especificado. Caso contrário retorna false (ex.: se o arquivo não existir).

Exemplo

Este exemplo abre o arquivo "test.txt" que está na raiz do resource atual (onde o código tá sendo executado), e exibe o seu conteúdo no console.

local hFile = fileOpen("test.txt", true)       -- tentamos abrir o arquivo (em modo leitura)
if hFile then                                  -- verificamos se foi aberto com sucesso
    local buffer
    while not fileIsEOF(hFile) do              -- enquanto não estivermos o final do arquivo...
        buffer = fileRead(hFile, 500)          -- ... lemos os próximos 500 bytes ...
        outputConsole(buffer)                  -- ... e exibimos no console
    end
    fileClose(hFile)                           -- fechamos o arquivo depois de trabalhar com ele
else
    outputConsole("Unable to open test.txt")
end

This example show how to append data to an existing file: Este exemplo mostra como inserir (sem substituir) um dado em um arquivo existente:

local hFile = fileOpen("test.txt")             -- tentamos abrir o arquivo (em modo leitura e gravação)
if hFile then                                  -- verificamos se foi aberto com sucesso
    fileSetPos( hFile, fileGetSize( hFile ) )  -- movemos a posição para o fim do arquivo
    fileWrite(hFile, "hello" )                 -- inserimos o valor que queremos
    fileFlush(hFile)                           -- Forçamos a gravação imediata do valor que inserimos no arquivo
    fileClose(hFile)                           -- fechamos o arquivo depois de trabalhar nele
else
    outputConsole("Unable to open test.txt")
end

Veja também