黑马程序员技术交流社区

标题: 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