[RESOLVIDO]Tem como ler um arquivo gravado em binário e converte-lo numa String?

11 respostas
D
try {
            FileReader fr = new FileReader("produtos.dat");
            String sr=fr.toString();
            JOptionPane.showMessageDialog(null, sr);

        } catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "erro ao ler protudos;");
        }

Eu tentei fazer isto, mas cada hora da um erro diferente, a ultima vez deu "java.io.FileReader@6c1989b5"; O que estou fazendo de errado??

Eu precisaria converter em String para poder trabalhar com o arquivo...

11 Respostas

Andre_Brito

Gravado em binário? Você diz 0s e 1s dentro do arquivo ou a coleção de bytes do arquivo? Se é essa última, você grava com algum nome e extensão o array de bytes e depois lê o conteúdo em String.

D

Sim, mas como faço isto?

D

Eu já me matei de estudar para aprender a fazer isto(não consegui) e nem este fórum me ajuda…

Andre_Brito

Vai ver ‘este forum’ é muito ruim pra você… O pessoal aqui não tem muito conhecimento ou não tem boa vontade de te ajudar mesmo. Quem sabe você deveria ir pra outro forum.

Meu… Você paga pro forum te ajudar?

Ficar estressado não vai ajudar em nada. Isso só vai trazer à você uma péssima experiência (e acredite que isso vai acontecer em qualquer lugar que você estiver, inclusive no seu trabalho, onde os pepinos serão muito maiores) com a linguagem.

Se eu estiver com muita boa vontade (e se ninguém colocar a resposta antes), volto a postar a resposta a noite, quando eu não estiver trabalhando. A não ser que você desembolse uma grana. Daí a gente pode pensar melhor. Veja que o problema não foi nem te ajudar… Foi você cobrar por algo e de forma muito mal educada.

D

Andre Brito:
Vai ver ‘este forum’ é muito ruim pra você… O pessoal aqui não tem muito conhecimento ou não tem boa vontade de te ajudar mesmo. Quem sabe você deveria ir pra outro forum.

Meu… Você paga pro forum te ajudar?

R : Não pago, só me decepcionei porque ele sempre saciou minhas dúvidas, achei que desta vez não seria diferente… Mas ninguém tem obrigação de me ajudar. Não tenho o que reclamar deste fórum, já “salvou minha pele” várias vezes. Só para esta parte de arquivos que estou tendo problemas e dizem que arquivos não é o ponto forte de java…

Ficar estressado não vai ajudar em nada. Isso só vai trazer à você uma péssima experiência (e acredite que isso vai acontecer em qualquer lugar que você estiver, inclusive no seu trabalho, onde os pepinos serão muito maiores) com a linguagem.

Olha a hora que postei a dúvida, virei a madrugada praticamente para achar solução e não achei, é para um trabalho da faculdade e eu prometi concluir até uma parte para minha equipe até sexta, to vendo que não vou conseguir realizar minha promessa. Virar várias madrugadas em busca de uma solução por ser muito inexperiente com arquivos e não encontrar deixa qualquer um com stress…

E você acha que eu não sei que ficar Streesado só ira atrapalhar??


Se eu estiver com muita boa vontade (e se ninguém colocar a resposta antes), volto a postar a resposta a noite, quando eu não estiver trabalhando. A não ser que você desembolse uma grana. Daí a gente pode pensar melhor. Veja que o problema não foi nem te ajudar… Foi você cobrar por algo e de forma muito mal educada.

Bom, você coloca a resposta se quiser, se não quiser e ninguém mais quiser, terei de virar mais algumas madrugadas lendo documentações e tutoriais que não funcionam com a esperança de encontrar uma solução.

M

Qual tutorial não funciona? Dê um exemplo.

O erro que você está cometendo é erro de pessoas muito iniciantes. Não culpe os tutoriais, olhe para si próprio um pouco se quiser melhorar.

D

marcio_gs:

Qual tutorial não funciona? Dê um exemplo.

O erro que você está cometendo é erro de pessoas muito iniciantes. Não culpe os tutoriais, olhe para si próprio um pouco se quiser melhorar.

Eu infelizmente estou na faculdade e não tenho acesso aos tutoriais que baixei por aqui, eu sei que é bem possível que o erro seja meu, pois é a primeira vez que trabalho com arquivos, mas você me ajudaria muito se disseste qual o " erro de pessoas muito iniciantes", pois poderia pesquisar uma solução muito mais rápido e este é a primeira linha de código que escrevo que envolvi leitura de arquivos em java, o que explicaria este "erro grosseiro’

M

A questão não é a falta de prática com leitura de dados e sim falta de pesquisa e compreensão das coisas. Entenda os conceitos antes de tentar sair fazendo. Olha o que está escrito na documentação do FileReader:

Convenience class for reading character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream.

FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream.

http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileReader.htm

É necessário 30 segundos para ver que o caminho que você está tentando é o errado.

E não espere as coisas na mão, vá atrás. Por não ir atrás você comete erros igual o de achar que o toSring da classe FileReader deveria retornar o seu valor.

D
marcio_gs:
A questão não é a falta de prática com leitura de dados e sim falta de pesquisa e compreensão das coisas. Entenda os conceitos antes de tentar sair fazendo. Olha o que está escrito na documentação do FileReader:
Convenience class for reading character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream.

FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream.

http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileReader.htm

É necessário 30 segundos para ver que o caminho que você está tentando é o errado.

E não espere as coisas na mão, vá atrás. Por não ir atrás você comete erros igual o de achar que o toSring da classe FileReader deveria retornar o seu valor.

Eu consegui fazer graças a um programa open source que baixei e fiz algumas adaptações.

try {
DataInputStream di = new DataInputStream(new FileInputStream(new File("produtos.dat")));
String linha = di.readLine();
            @SuppressWarnings("StringBufferMayBeStringBuilder")
StringBuffer blau = new StringBuffer();
while(linha != null)
{
    blau.append(linha);
    linha = di.readLine();
}

            String S=blau.toString();

JOptionPane.showMessageDialog(null, S);
}
catch (Exception ex)
{
    JOptionPane.showMessageDialog(null, "erro");

}
    }

Quanto ao site, ele não encontra, "We're sorry, the page you requested was not found.", não entendi muito como o código do programa que adaptei, mas só precisava disto para poder fazer o programa, eu tento entender depois de programar, por enquanto estou com pouco prazo para fazer muitas coisas.

Andre_Brito

Só de teimoso, vou postar.

static String filePathName = "TheNewFile";

public static void main(String[] args) throws IOException {
	System.out.println(getContentFromFile());
}

private static String getContentFromFile() throws IOException {
	StringBuilder content = new StringBuilder();

	byte[] bytes = getBytesFromSomewhere();

	File file = new File(filePathName);
	FileOutputStream fos = new FileOutputStream(file);
	fos.write(bytes);

	BufferedReader reader = new BufferedReader(new FileReader(file));

	String line = "";
	while ((line = reader.readLine()) != null) {
		content.append(line).append("\n");
	}

	return content.toString();
}
D
Andre Brito:
Só de teimoso, vou postar.
static String filePathName = "TheNewFile";

public static void main(String[] args) throws IOException {
	System.out.println(getContentFromFile());
}

private static String getContentFromFile() throws IOException {
	StringBuilder content = new StringBuilder();

	byte[] bytes = getBytesFromSomewhere();

	File file = new File(filePathName);
	FileOutputStream fos = new FileOutputStream(file);
	fos.write(bytes);

	BufferedReader reader = new BufferedReader(new FileReader(file));

	String line = "";
	while ((line = reader.readLine()) != null) {
		content.append(line).append("\n");
	}

	return content.toString();
}

Muito obrigado, caso uma solução esteja dando problemas, vou ter 2.

Me poupou muito trabalho...

Criado 17 de novembro de 2010
Ultima resposta 17 de nov. de 2010
Respostas 11
Participantes 3