28 de fev. de 2012

textread do MATLAB em Java

Fiz uma função básica como o textread do MATLAB, onde ele pega um arquivo de entrada (só usei txt, mas creio que qualquer um sirva) do formato CSV e o transforma em uma matriz de String (creio que seja possível uma matriz de inteiros, usando o

int variavel = Integer.parseInt(variavelstring); //Passar de String para Inteiro

Coloquei no docs para fins de formatação, o link segue
https://docs.google.com/document/d/1UASiILgvrS7l3-pJXJx10ONhmPX2liWtT1tK-7Gm5ww/edit


 package comunicacao;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.StringTokenizer;

/**
 *
 * @author Raphael F
 */
public class textread {

    public String[][] Leitura(String nomeArquivo, int col) throws IOException {//c é o numero de colunas
        int lin = numeroLinhas(nomeArquivo);
        String[][] tabela = new String[lin+1][col];
        try {

            //csv file containing data
            //create BufferedReader to read csv file
            BufferedReader br = new BufferedReader(new FileReader(nomeArquivo));
            nomeArquivo = "";
            StringTokenizer st = null;
            int lineNumber = 0, tokenNumber = 0;
            int cont, contt;
            //read comma separated file line by line


            //for (cont = 0; cont < lin; cont++) {
            //  for (contt = 0; (nomeArquivo = br.readLine()) != null; contt++) {
            
            while ((nomeArquivo = br.readLine()) != null ) {
                

                //break comma separated line using ","
                st = new StringTokenizer(nomeArquivo, ",");
                while (tokenNumber<4){
                //while (st.hasMoreTokens()) {
                    int colNumber = 0;
                    //display csv values
                    /*System.out.println("Line # " + lineNumber
                            + ", Token # " + tokenNumber
                            + ", Token : " + st.nextToken());*/
                    tabela[lineNumber][tokenNumber] = st.nextToken();
                    tokenNumber++;
                }
                tokenNumber=0;
                lineNumber++;
            }
        } catch (Exception e) {
            System.out.println("Exception while reading csv file: " + e);
        }
        return tabela;
    }

    public int numeroLinhas(String filename) throws IOException {
        InputStream is = new BufferedInputStream(new FileInputStream(filename));
        try {
            byte[] c = new byte[1024];
            int count = 0;
            int readChars = 0;
            while ((readChars = is.read(c)) != -1) {
                for (int i = 0; i < readChars; ++i) {
                    if (c[i] == '\n') {
                        ++count;
                    }
                }
            }
            return count;
        } finally {
            is.close();
        }
    }
}



Para acessar a função em outros métodos:



textread lerCSV = new textread();
    String resultado[][];
        
    try {
        resultado = lerCSV.Leitura("ENDERECO COMPLETO DO ARQUIVO", NUMERO DE COLUNAS);
        
        int cont = 0;
        int cont2 = 0;
        for (cont = 0; cont < resultado.length; cont++) {
            for (cont2 = 0; cont2 < resultado[0].length; cont2++) {
                System.out.println("linha" + cont+ "="+ resultado[cont][cont2]);
            }
            System.out.println("\n");
        }
    } catch (IOException ex) {
        Logger.getLogger(Comunicacao.class.getName()).log(Level.SEVERE, null, ex);
    }

Nenhum comentário:

Quem sou eu

Raphael Fernandes
Carioca, Brasileiro, Estudante de Robótica
Hiperativo, Imperativo
Gosto de tecnologia, de transporte, de Rock, de reclamar e de propagandas criativas (e outras coisas que posso ter falado em um post ou não)
Musicalmente falando, sou assim.

Related Posts Plugin for WordPress, Blogger...

Veja também...