Manipulando Arquivo Binário em PHP [RESOLVIDO]

13. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 29/08/2012 - 14:55h

Faça:

<?php
$fp = fopen('data.dat', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// o conteúdo de 'data.txt' agora é 123 e não 23!
?>


observe que ao manipular o arquivo em fopen, coloquei .dat, pois o formato não importa se o conteúdo acaba sendo texto, assim como no seu exemplo em PASCAL.


  


14. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Renan
RenanCamara

(usa Ubuntu)

Enviado em 29/08/2012 - 15:12h

Eu não quero escrever um txt puro no arquivo, meu caro!


15. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Renan
RenanCamara

(usa Ubuntu)

Enviado em 29/08/2012 - 15:14h

Eu quero gravar um tipo object dentro do arquivo, e não uma string qualquer.


16. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 29/08/2012 - 19:17h

Ok, fiz os testes realmente a forma como o registro do pascal é arquivada não é 100% ASCII.

Bom, como já foi dito o tipo registro não existe no PHP, se queres algo semelhante crie um Objeto:


<?php

# Criando a classe (estrutura do objeto)
class Pessoa {
private $nome, $idade;

public function setNome( $nome ) {
$this->nome = $nome;
}

public function getNome() {
return $this->nome;
}

public function setIdade( $idade ) {
$this->idade = $idade;
}

public function getIdade() {
return $this->idade;
}

}

# Usando o Objeto

$pessoa = new Pessoa();

# Os dados devem vir de um form HTML via GET ou POST

$nome = $_POST['nome'];
$idade = $_POST['idade'];

$pessoa->setNome( $nome );
$pessoa->setIdade( $idade );


# Agora grave no arquivo usando os métodos anteriormente postados...
# ....
fwrite($fp, 'Nome: ' . $pessoa->nome);
#...

?>


Depois se quiseres armazenar em arquivo (o melhor seria um banco de dados...) use as funções fopen, fwrite, anteriormente citadas.

Até hoje não vi a manipulação de arquivos binários com PHP, acredito que não seja possível, até mesmo por falta de necessidades... o que é feito geralmente é gravar o conteúdo em Banco de Dados ou arquivos texto puro.

Abraços


17. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Renan
RenanCamara

(usa Ubuntu)

Enviado em 29/08/2012 - 19:57h

Boa, rai3mb! Demorou um pouquinho mas você me entendeu! Nossa divergências provavelmente apareceram por causa das nossas linguagens mãe.


Olha: http://php.net/manual/pt_BR/function.fopen.php

Citam nas notas para botar o 'b' quando o arquivo for binário.
Mas não aparece exemplos concretos do uso.

Em C, C++, e até mesmo em pascal, como e muitas outras linguagens usamos arquivos binários para funcionar como um banco de dados em aplicações mais simples.

Por exemplo:

type ficha : Record
nome : String[30];
endereco : String[40];
idade : integer;
salario : real;
end;

var
arquivo: File of ficha;

Funciona parecidamente com uma tabela de banco de dados, por exemplo, em C e C++ o "record" se chama "struct", e vc associa o arquivo com uma variável desse tipo para trabalhar com o arquivo.

Em PHP, como não há esse tipo de registro eu queria entender como trabalham em PHP, com arquivo. Eu já vi pessoas abrindo o arquivo que já existia, e como a variável do PHP tem esse comportamento "hibrido", ela recebe a leitura do arquivo independente do tipo do dado quando estiver realizando a leitura. Mas e na hora de criar um arquivo com uma estrutura semelhante a do exemplo acima? Vou tentar com os objetos mas acho que provavelmente deve existir outra forma.

Sei que na grande e absoluta maioria dos casos, isso seria mais eficiente utilizando um banco de dados, mas para algo pequeno, o uso de arquivo pode ser válido.


18. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 29/08/2012 - 20:32h

Concordo, para algo pequeno pode ser usado um arquivo, e também há o sqlite ;-), ótimo pra aplicações pequenas e até medianas, e a vantagem é que o conteúdo do banco pode ser migrado facilmente para um SGBD de respeito como postgres, mariaDB, etc.


19. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 30/08/2012 - 06:48h

Só uma observação. Apesar de o SQLite ser um SGBD pequeno ele pode sim ser usado em aplicação média ou até grande, pois dá suporte a banco de dados de até 2 terabytes. Se isso for pequeno, não saberia dizer o que é um sistema grande, a não ser o Google. rs.


20. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Renan
RenanCamara

(usa Ubuntu)

Enviado em 30/08/2012 - 14:42h

A minha intenção realmente não é usar um SGBD...


21. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Rogerio
rogeriodemoraes

(usa Outra)

Enviado em 08/01/2015 - 13:56h


Para ler arquivo binário, utiliza-se no fopen o tipo de leitura 'rb',
ficando assim fopen('data.txt', 'rb') e arquivos ASCII apenas 'r'.

A leitura do PHP já é binária, embora o tipo padrão não interprete
em alguns tipos de arquivos os caracteres, outro fator que influencia
isso é a questão do formato ISO, utf8, entre outros. Embora possa o
conteúdo estar em um formato a codificação o arquivo pode não estar.

Por padrão todo arquivo gerado no PHP é binário com atributo 'wb' e
codificação UTF8 (ASCII) como 'w'. Embora suporte outros formatos,
os mesmos são definidos no Apache (Servidor Web).



22. Re: Manipulando Arquivo Binário em PHP [RESOLVIDO]

Adonias Alcântara
alcdoni

(usa Linux Mint)

Enviado em 22/03/2017 - 15:59h

<?php
$numbers_out = range(1, 10);

// Gravando como binario
$bin = pack('i*', ...$numbers_out);
$handle = fopen('test.dat', 'w');

fwrite($handle, $bin);
fclose($handle);

// Lendo como binario
$handle = fopen('test.dat', 'r');

while (!feof($handle))
$buf .= fread($handle, 40);

$numbers_in = unpack('i*', $buf);

fclose($handle);
print_r($numbers_in);




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts