黑马程序员技术交流社区

标题: io练习问题 [打印本页]

作者: 张文强    时间: 2012-5-31 20:57
标题: io练习问题
import java.io.*;
public class CopyFilesUnit {
  public static void main(String[] args){
  String scrFile=args[0];
  String destFile=args[1];
  //fileCopy(scrFile,destFile);
  if(fileCopy(scrFile,destFile)){
  System.out.println("文件自制成功");
  }else{
  System.out.println("文件自制不成功");
  }
   
  }
public static boolean fileCopy(String scrScr,String destScr){
  File scrFile,destFile;
  FileInputStream in=null;
  FileOutputStream out=null;
   
  boolean flag=false;
  try{
  scrFile=new File(scrScr);
  destFile=new File(destScr);
  if(!destFile.exists()){
  destFile.createNewFile();
  }
  in=new FileInputStream(scrFile);
  out=new FileOutputStream(destFile);
  byte[] butf=new byte[1024];
  int len;
  String str=null;
  //StringBuffer str=new StringBuffer();
  while((len=in.read(butf))!=-1){
  str=new String(butf,0,len);
   out.write(butf);
  }
  //String st=str.toString();
  byte[] buff=str.getBytes();
  out.write(buff);
  in.close();
  out.close();
  flag= true;
  }catch(IOException e){
   
  }
  return flag;
}
}


提示:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at CopyFilesUnit.main(CopyFilesUnit.java:4)  牛人分析下哈


作者: 程序猿    时间: 2012-5-31 21:28
String scrFile=args[0];
  String destFile=args[1];
你应该是运行的时候没有加参数吧,你这两句都有错误。
因为你没加参数的时候是获取不到数据的。你直接访问第一个和第二个元素就会出现数组越界,
前面应该加上
while(args.length!=0)
将后面的语句包到while循环里

如果是针对你这个程序应该是
while(args.length>=2)

public class CopyFilesUnit {
  public static void main(String[] args){
while(args.length>=2)
{
  String scrFile=args[0];
  String destFile=args[1];
  //fileCopy(scrFile,destFile);
  if(fileCopy(scrFile,destFile)){
  System.out.println("文件自制成功");
  }else{
  System.out.println("文件自制不成功");
  }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2