¿Por qué recibo una ArrayIndexOutOfBoundsException en mi código? [cerrado]

¿Por qué obtengo java.lang.ArrayIndexOutOfBoundsException: 0 en CopyFile.main?

//Copy one file Data to another File
import java.io.*;

class CopyFile{

        public static void main(String[] args)throws IOException{
            FileInputStream fis=new FileInputStream(args[0]);//reading File 
            FileOutputStream fos=new FileOutputStream(args[1]);//reading File
            int data;

            while((data=fis.read())!=-1){
                fos.write(data);
/*here  using while loop to copy data from one file and storing it in another file*/
            }
        }
}

preguntado el 01 de julio de 12 a las 21:07

Probablemente porque no proporciona dos argumentos:

Publique el mensaje de error completo para que podamos ver qué línea da el error. -

Señor, le pido que no me vote negativamente de esta manera porque soy nuevo en Java y estoy tratando de aprender. Por favor, no quiero que me prohíban.

No te banearán por una mala pregunta. Solo intenta responder nuestras preguntas a partir de los comentarios. Aquí la gente quiere ayudarte no castigarte. -

3 Respuestas

Parece que está ejecutando el archivo como

java CopyFile

Si lo hace, está mal. Debe pasar los argumentos para ejecutar su código ya que está buscando dos argumentos.

Ejecute el código de esta manera: -

java CopyFile arg1 arg2

Respondido 01 Jul 12, 21:07

Señor, le pido que no me vote negativamente de esta manera porque soy nuevo en Java y estoy tratando de aprender. Por favor, no quiero que me prohíban. nitina bansal

@NitinBansal: Estamos allí para ayudarlo, pero antes de publicar una pregunta o responder una pregunta, debe pasar por el Preguntas Frecuentes sección, que será realmente útil para usted. Para cualquier problema, publique una pregunta con información detallada. Ayuda a otros a diagnosticar su problema y decirle. Responda a su comentario, no he votado negativo. - Siva charan

Gracias por la ayuda. Parece que estaba ejecutando el programa sin pasar los argumentos de la línea de comandos. - nitina bansal

Probablemente no pase dos argumentos en la línea de comando cuando inicie la aplicación.

Respondido 01 Jul 12, 21:07

Señor, le pido que no me vote negativamente de esta manera porque soy nuevo en Java y estoy tratando de aprender. Por favor, no quiero que me prohíban. nitina bansal

No te voté negativo. Si lo hiciera, probablemente no respondería a su pregunta. - pshemo

Gracias por la ayuda, tenías razón. Parece que estaba ejecutando el programa sin pasar los argumentos de la línea de comandos. - nitina bansal

No verifique que los argumentos sean más grandes que 2:

if (args.length < 2)
{
    // args[1] doesn't exist
    System.out.println("You didn't provide two files.");
    return;
}

Respondido 01 Jul 12, 21:07

No necesita ser más grande. Mayor o igual a dos está bien - Oskar Kjellin

No tiene que comprobar nada. Solo necesita proporcionar dos argumentos. - Marko Topolnik

@MarkoTopolnik Aunque no es necesario verificar para que funcione, solucionaría la excepción y daría un buen mensaje de error. - Oskar Kjellin

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.