黑马程序员技术交流社区
标题:
import java.io.*; public class Copy { public static void main(String[] arg
[打印本页]
作者:
凡延海
时间:
2012-5-20 16:34
标题:
import java.io.*; public class Copy { public static void main(String[] arg
import java.io.*;
public class Copy
{
public static void main(String[] args) throws Exception
{
if(args.length<2){
System.out.println("Uage:java Copy src dest");
}
Quest.copy(args[0],args[1]);
}
public static void copy(String src,String dest){
InputStream ips=null;
OutputStream ops=null;
try{
ips=new FileInputStream(src);
ops=new FileOutputStream(dest);
byte[] buf=new byte[1024];
int len=ips.read(buf);
ops.write(buf,0,len);
ips.close();
ops.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
我要编写一个方法,复制文件到另一个地方,我的代码编译的时候没有错误,但是在运行的时候就说main有异常,我已经把异常给抛弃了,怎么还有异常呢?
作者:
李哲
时间:
2012-5-20 17:02
Quest.copy(args[0],args[1]);
应该改为copy(args[0],args[1]);
Quest是什么?
修改后,我传入的参数是"0.txt" "1.txt"
程序正常。
作者:
陆建平
时间:
2012-5-20 17:11
Quest没有定义
作者:
彩虹
时间:
2012-5-20 19:09
之所以,老出现main异常,是因为
Quest.copy(args[0],args[1]);
这一句有误,首先,Quest没有定义,应将其舍去,改为
copy(args[0],args[1]);然后,你的主函数是这么定义的 public static void copy(String src,String dest){},当你调用copy方法将args[0],.args[1]两个参数传递进去时,就相当于你的源src为args[0],目的dest为args[1],再看看args[0],args[1]代表什么,他表示main(String[] args)主函数中的参数,字符串数组args中的第一个和第二个元素。而main方法是程序执行时的入口。你一直出现main异常,就是因为你复制的源是args[0],一开始如果你不给主函数传递参数,使其源不为空的话,那么在调用copy 方法时,就会出现没有复制源的问题,而这个复制的源又跟main方法的参数有关,所以当然会报告main异常的错误。。。
解决此问题的方法是,在执行程序之前,给main()方法传递一个字符串型的数组作为其参数。
作者:
田林
时间:
2012-5-20 19:40
首先。楼上已经指出了Quest.copy(args[0],args[1]);的错误,可以将Quest换成Copy。
你说的出现main异常,我想应该是你传参数的格式错了吧!如果你用的是cmd运行的话,传参数的格式应该为:
C:\>java Copy 参数1 参数2
作者:
凡延海
时间:
2012-5-20 19:54
嗯,知道了。谢谢。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2