日期:2014-05-20  浏览次数:20836 次

关于超界事件
如下程序的18行
FileInputStream fileInputStream= new FileInputStream(new File(args[0]));;
程序编译后,出错信息如下:
java.lang.ArrayIndexOutOfBoundsException: 0
at FileIOStream.main(FileIOStream.java:18)
请问这个怎么解决,是不是这样创建一个文件输入流会出现越界现象。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class FileIOStream {

/**
* @param args
* @throws FileNotFoundException 
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
byte[] buffer=new byte[1024];
FileInputStream fileInputStream= new FileInputStream(new File(args[0]));;
FileOutputStream fileOutputStream=new FileOutputStream(new File(args[1]));
System.out.println("复制文件:"+fileInputStream.available()+"字节");
while(true){
if (fileInputStream.available()<1024) {
int remain=-1;
while ((remain=fileInputStream.read())!=-1) {
fileOutputStream.write(remain);
}
break;
} else {
fileInputStream.read(buffer);
fileOutputStream.write(buffer);
}
}
fileInputStream.close();
fileOutputStream.close();
System.out.println("复制完成");
} catch (FileNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception
e.printStackTrace();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}


}

}


------解决方案--------------------
FileInputStream fileInputStream= new FileInputStream(new File(args[0]));;
args[0]有值嘛,是一个文件的路径吗
如果没有当然要报数组越界啦 ,找个正确的文件路径放上去再读取一下试试看
------解决方案--------------------
看一下args[0]的值,然后调试分析一下

越界一般不是什么大问题

祝你好运
------解决方案--------------------
个人感觉像是参数传的不对,args[0]的值没有取到。。。
------解决方案--------------------
如果实在不行就Debug跟一下吧。
或者出力一下log也可以。