[Tutorial] File Functions [PT-BR]
#1

Esse tutorial й voltado para quem quer aprender ou tem curiosidade de mexer com arquivos atravйs da linguagem Pawn, deixando claro que irei me basear nas principais funзхes, аs quais sгo indispensбveis.

Eu vou trabalhar a maior parte do Tutorial com exemplos, pois a intenзгo й TIRAR dъvidas e nгo AUMENTБ-LAS!

Primeiramente, vamos verificar se um arquivo existe?

fexist:
* Verifica se um determinado existe.

Com diretуrio padrгo - scriptfiles
Код:
if(fexist("ForumSamp.ini"))
ForumSamp = Nome do arquivo.
.ini = extenзгo de arquivo.

Com diretуrio padrгo - scriptfiles:
Код:
if(fexist("ForumSamp.ini"))
{
   // Caso exista, imprime no console a msg abaixo
   print("Arquivo existe");
}
else
{
   // Caso NГO exista, imprime no console a msg abaixo
   print("Arquivo nгo existe");
}
Com outro diretуrio:
Код:
if(fexist("ContasDoForum/ForumSamp.ini"))
ContasDoForum = Pasta.
ForumSamp = Nome do arquivo.
.ini = Extenзгo de arquivo.

OBS: Lembrando que essa funзгo nгo faz leitura de caracteres especiais, portanto, nгo insira acentos em arquivos!


fopen:
* Abre determinado arquivo com ou sem parвmetros adicionais [MODO: ler / escrever / adicionar / ler & escrever].

Para criar e definir um valor а uma variбvel de arquivos, cuja funзгo й abrir um arquivo, utiliza-se:
Код:
new File:Variavel;
io_read: [MODO LER]
Deixa o arquivo especificado suscetнvel а leitura.
Код:
fopen("ForumSamp.ini", io_read);
io_write: [MODO ESCREVER]
Deixa o arquivo especificado suscetнvel а escrita.
Код:
fopen("ForumSamp.ini", io_write);
io_append: [MODO ADICIONAR]
Deixa o arquivo especificado suscetнvel а escrita.
Код:
fopen("ForumSamp.ini", io_append);
io_readwrite: [MODO LER & ESCREVER]
Deixa o arquivo especificado suscetнvel а leitura e escrita.
Код:
fopen("ForumSamp.ini", io_readwrite);
Observaзхes dessa funзгo:
Nгo ocasiona crash independente da existкncia de um determinado arquivo, simplesmente abre e prepara determinado arquivo para o modo especificado.
Os crash's resultantes da existкncia de um determinado arquivo estгo relacionados аs funзхes derivadas dos modos: ler, escrever, adicionar e ler & escrever.


fclose:
* Fecha determinado arquivo.

OBS: Lembre-se sempre de fechar o arquivo apуs ter concluнdo alguma aзгo com o mesmo.

Nesse exemplo abaixo deixei claro que o que deve ser fechado й a funзгo que abriu o arquivo (fopen).
Код:
fclose(fopen("ForumSamp.ini"));
Lendo um arquivo:
* Essa funзгo й exclusiva para leitura do arquivo e nгo gera qualquer alteraзгo no mesmo.

Exemplo №: Fiz um loop de 50 voltas, ou seja, vai ser lido 50 linhas em um determinado arquivo e serб impresso no console cada linha.

OBS: Se o arquivo nгo existir o servidor tomarб crash!

Utilizamos um loop para getar os valores de todas as linhas!
Код:
new 
     File:Arquivo, //Definimos a Variбvel Arquivo
     String[100] // Definimos a Variбvel String e nela serб inserido cada linha e deverб conter, no mбximo, 100 caracteres por linha.
;

Arquivo = fopen("ForumSamp.ini", io_read); // Abrimos o arquivo e definimos seu modo para READ [ LER ]

for(new i = 0; i < 50; i ++)
{
   fread(Arquivo, String);
   printf(String);
}

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO
Exemplo І: Fiz um loop que darб a quantia de voltas NECESSБRIAS, conforme a quantidade de linhas sem precisar especificar o nъmero de voltas.

Код:
new 
     File:Arquivo, //Definimos a Variбvel Arquivo
     String[100], // Definimos a Variбvel String e nela serб inserido cada linha e deverб conter, no mбximo, 100 caracteres por linha.
;

Arquivo = fopen("ForumSamp.ini", io_read); // Abrimos o arquivo e definimos seu modo para READ [ LER ]

for(new i = 0; i < fread(Arquivo, String); i ++)
{
   printf(String);
}

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO
Escrevendo em um arquivo:
* Esta funзгo apaga quaisquer informaзхes contidas no arquivo e substitui o mesmo com as novas informaзхes. (Quebra de linha nгo funciona nesse caso)

OBS: Diferente de io_read, o arquivo й criado se ainda nгo existir, PORЙM, se o arquivo for criado em um diretуrio diferente de scriptfiles e o mesmo nгo existir, o servidor tomarб crash.

OBS І: Independente se adicionar os parвmetros para quebra de linha nгo funcionarб, pois, o arquivo terб suas informaзхes anteriores resetadas e serб adicionado novas informaзхes no mesmo.

Код:
new 
     File:Arquivo //Definimos a Variбvel Arquivo
;

Arquivo = fopen("ForumSamp.ini", io_write); // Abrimos o arquivo e definimos seu modo para WRITE [ ESCREVER ]

fwrite(Arquivo, "Hello World!!!"); // Mensagem que serб escrita em arquivo

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO
Adicionando em um arquivo:
* Essa funзгo nгo altera os dados anteriores do arquivo, somente adiciona mais informaзхes dentro do mesmo.

OBS: Diferente de io_read, o arquivo й criado se ainda nгo existir, PORЙM, se o arquivo for criado em um diretуrio diferente de scriptfiles e o mesmo nгo existir, o servidor tomarб crash, exatamente igual o caso de io_write.

\r\n = Quebra de linha em arquivos de texto.

Код:
new 
     File:Arquivo //Definimos a Variбvel Arquivo
;

Arquivo = fopen("ForumSamp.ini", io_append); // Abrimos o arquivo e definimos seu modo para APPEND [ ADICIONAR ]

fwrite(Arquivo, "Hello World!!!\r\n"); // Mensagem que serб escrita em arquivo, juntamente com a quebra de linha.

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO
Lendo e Escrevendo em um arquivo:
* Essa funзгo lк e escreve dentro de um arquivo. Funзгo io_write + io_read + io_append.

Semelhanзa com io_read: Faz a leitura do arquivo.
Semelhanзa com io_write: Escreve no arquivo.
Semelhanзa com io_append: Escrever informaзхes dentro do arquivo e (opcionalmente) mantem os dados anteriores.

Precisamos criar um loop, pois esse loop farб a leitura de um arquivo e respectivamente irб escrever dentro do mesmo, assim como io_append.

Код:
new 
     File:Arquivo, //Definimos a Variбvel Arquivo
     String[100] // Definimos a Variбvel String e nela serб inserido cada linha e deverб conter, no mбximo, 100 caracteres por linha.
;

Arquivo = fopen("ForumSamp.ini", io_readwrite); // Abrimos o arquivo e definimos seu modo para READWRITE [ LER & ESCREVER ]

for(new i = 0; i < 50; i ++)
{
   fread(Arquivo, String);
   printf(String);
}

fwrite(Arquivo, "Hello World!!!\r\n"); // Msg com quebra de linha

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO
Alternando entre os modos:
Podemos utilizar mais modos em uma mesma funзгo:

Код:
new
    File:Arquivo, //Definimos a Variбvel Arquivo.
    String[100] // Definimos a Variбvel String e nela serб inserido cada linha e deverб conter, no mбximo, 100 caracteres por linha.
;

Arquivo = fopen("ForumSamp.ini", io_append); // Abrimos o arquivo e definimos seu modo para APPEND [ ADICIONAR ]
fwrite(Arquivo, "Adicionar\r\n");

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO

Arquivo = fopen("ForumSamp.ini", io_read); // Abrimos o arquivo e definimos seu modo para READ [ LER ]

for(new i = 0; i < 50; i ++)
{
   fread(Arquivo, String);
   printf(String);
}

fclose(Arquivo); // LEMBRE-SE DE FECHAR O ARQUIVO
Vк-se que abri o arquivo e apуs a execuзгo da minha funзгo, o arquivo foi fechado. Utilizei fclose 2x apуs abrir o arquivo tambйm 2x.


P.S: Se alguйm quiser complementar o tutorial, fique а vontade.
Reply
#2

Belo tutorial
Reply
#3

Quote:
Originally Posted by Jimmmy
Посмотреть сообщение
Belo tutorial
Thx!
Reply
#4

Parabйns , уtimo tutorial.
Reply
#5

Quote:
Originally Posted by Coringa_Vilao
Посмотреть сообщение
Parabйns , уtimo tutorial.
Vlw, @Coringa_Vilao!
Reply
#6

Bem explicado, Parabйns!
Reply
#7

Quote:
Originally Posted by Ever_SH
Посмотреть сообщение
Bem explicado, Parabйns!
Vlw, @Ever_SH!
Reply
#8

Ficou excelente!
Reply
#9

Quote:
Originally Posted by bruxo00
Посмотреть сообщение
Ficou excelente!
Obg, @bruxo00!
Reply
#10

Уtimo tutorial reputado+
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)