Duvida if( args[0] == "" )

4 respostas
F
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package lzw;

import java.io.*;

public class lzw1
{
	public static void main ( String[] args ) throws FileNotFoundException
	{
               
		FileInputStream  input  = new FileInputStream(new File("c:\\grande2.txt"))
		FileOutputStream output = null;

		if( args[0] == "" )
		{
			System.out.println( "Usage: java lzw <filename>" );
			System.exit( 1 );
		}

		try
		{
			input = new FileInputStream( args[0] );
		}
		catch ( FileNotFoundException fnfe )
		{
			System.out.println( "Unable to open input file: " + args[0] );
			System.exit( 1 );
		}

		try
		{
			output = new FileOutputStream( "compressed.lzw" );
		}
		catch ( FileNotFoundException fnfe )
		{
			System.out.println( "Unable to open output file compressed.lzw " );
			System.exit( 1 );
		}

		LZWCompression lzw = new LZWCompression( input, output );

		lzw.compress();		/* compress the file */

		try
		{
			input.close();
			output.close();
		}
		catch ( IOException ioe )
		{
			System.out.println( "IOException in main()." );
			System.exit(1);
		}

		System.out.println( "Done! Compressed file: compressed.lzw");
	}
}
Minha dúvida é o seguinte o que é esse primeiro IF,pelo o que entendi ele pega o primeiro argumento no caso o arquivo que estou enviando e vê se é nulo ou não,

mais eu criei este arquivo no FileInputStream mesmo assim ele sempre volta para mim run:

Exception in thread main java.lang.ArrayIndexOutOfBoundsException: 0

at lzw.lzw1.main(lzw1.java:18)

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

4 Respostas

V

Ola Felipe

Segue   if( args[0] == "" )  verifica se o 1 item do array de argumentos esta vazio ou se foi informado o argumento que no seu caso e arquivo , quando vc roda o programinha vc tem que passar o diretorio do arquivo como argumento ( pode configurar isso no eclipse ou em outra merramenta que estaja ultilizando ) .como ele nao tem nenhum argumento mais esta instanciado, ele gera o erro java.lang.ArrayIndexOutOfBoundsException quanto tenta obter o valor da posicao ínicial ( 0 ) .

Espero ter ajudado.

F

Perfeito,
Estou usando netbeans,só não entendi como passar este diretorio… eu pensei que só passando criando o File já estava passando para ele.

F

Obrigado pela ajuda,acredito que encontrei rsrs…Rodou.

V

Esse if está errado. Não se deve comparar Strings com ==, e sim com equals. O correto seria:

if (args[0].equals(""))

Ou:

if ("".equals(args[0]))

Outra coisa, seria bom garantir que o args tem alguma coisa:

if (args.length &lt; 1 || "".equals(args[0]))
Criado 6 de novembro de 2010
Ultima resposta 6 de nov. de 2010
Respostas 4
Participantes 3