Obter número de colunas de um arquivo csv

Pessoal, preciso de ajuda

Eu tenho um arquivo csv com várias colunas que uso para gerar um outro arquivo de inserts para o SQL Server
até aí tudo bem. A questão é que eu preciso comparar o número de colunas do arquivo csv com o número de colunas
da tabela no sql server. No caso eu obtenho o número de colunas do sql server via arquivo .properties do java
Porém não sei como obter o número de colunas do arquivo csv
Já tentei matrizes, contador no tokenizer, e etc
Estou precisando urgente disso D:
segue o que eu estou tentando fazer

[code] for (int lin=0;lin<1;lin++) {
String result =linha;

            String colu = result;
		    colunas++;
			Arquivo arquivoscol = new Arquivo();
			StringReader srcol = new StringReader(colu);
			StreamTokenizer stcol = new StreamTokenizer(srcol);
			stcol.parseNumbers(); // necessário
			int tokenType;
			Integer tokenNumber=0;
			tokenType = stcol.nextToken();
			
			
			if (tokenType == StreamTokenizer.TT_NUMBER) {
				tokenNumber++;
				
			}
			tokenType = stcol.nextToken(); 
			tokenType = stcol.nextToken();
			if (tokenType == '\"'
					|| tokenType == StreamTokenizer.TT_WORD) {
				tokenNumber++;
				
			}
			tokenType = stcol.nextToken(); 
			tokenType = stcol.nextToken();
			if (tokenType == StreamTokenizer.TT_NUMBER) {
				tokenNumber++;
			
			}
			for(int col=0;col<4;col++)
			{
				colunas++;
			
			}
           
		}[/code]

Posso estar totalmente errado, mas tentarei ajudar. Se você tiver um arquivo CSV com a estrutura similar ao exemplo abaixo, as colunas serão representadas na primeira linha e separadas por ;. No momento que você for ler essa primeira linha, você poderia simplesmente inserir essa linha num array respeitando o delimitador ;. Aí nesse exemplo abaixo teríamos um array com 2 elementos, que você obteria esse valor usando o lenght que retorna um int com o total de elementos do array.

Email;Nome
teste1@teste.com.br;Teste1
teste2@teste.com.br;Teste2
teste3@teste.com.br;Teste3
teste4@teste.com.br;Teste4

Po amigo, obrigado pela ajuda mas não é isso que eu quero
Eu quero varrer a primeira linha do arquivo para pegar o número de colunas, se eu fizer esse esquema de array, eu vou ter uma linha só obterei o número errado =/
e também, meu csv é separado por vírgulas, tendo vírgulas dentro de um campo descrição
Isso dificulta muito pois não é possivel dar o split e nem outras formas simples de divisão

[quote=DoninhaV8]Po amigo, obrigado pela ajuda mas não é isso que eu quero
Eu quero varrer a primeira linha do arquivo para pegar o número de colunas, se eu fizer esse esquema de array, eu vou ter uma linha só obterei o número errado =/
e também, meu csv é separado por vírgulas, tendo vírgulas dentro de um campo descrição
Isso dificulta muito pois não é possivel dar o split e nem outras formas simples de divisão[/quote]

Você tem como postar um exemplo da primeira linha? Outro dia fizemos algo parecido aqui no meu trabalho.

Seria algo nessa linha

10543,“Fertilizantes químicos, e nutrientes, de plantas”,500,“2000”

[quote=DoninhaV8]Po amigo, obrigado pela ajuda mas não é isso que eu quero
Eu quero varrer a primeira linha do arquivo para pegar o número de colunas, se eu fizer esse esquema de array, eu vou ter uma linha só obterei o número errado =/
e também, meu csv é separado por vírgulas, tendo vírgulas dentro de um campo descrição
Isso dificulta muito pois não é possivel dar o split e nem outras formas simples de divisão[/quote]

Não complique sua vida, use ponto-e-virgula para a separação ou | . Use um caracter que não está nos dados. E ai siga o que o colega já disse, basta ler a primeira linha e dar o parse. Pronto, o length do array vai dizer quantas colunas tem.

Se vc quer ir pelo caminho dificil faça o parser vc mesmo. pesquise a linha até achar uma virgula. Se achar um " sete um flag. Se a proxima virgula for encontrada e o flag estiver ativo, ignore e continue. No proximo " desative o flag. Ponha um count.
Isso vai dizer quantas colunas tem.

Outra opção é colocar o seu codigo de parsing em outra classe e usá-lo na primeira linha fora do loop. (tá meio estranho esse seu codigo)