A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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有异常,我已经把异常给抛弃了,怎么还有异常呢?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
Quest.copy(args[0],args[1]);
应该改为copy(args[0],args[1]);
Quest是什么?

修改后,我传入的参数是"0.txt"   "1.txt"
程序正常。
回复 使用道具 举报
Quest没有定义
回复 使用道具 举报
        之所以,老出现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()方法传递一个字符串型的数组作为其参数。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
首先。楼上已经指出了Quest.copy(args[0],args[1]);的错误,可以将Quest换成Copy。

你说的出现main异常,我想应该是你传参数的格式错了吧!如果你用的是cmd运行的话,传参数的格式应该为:

C:\>java   Copy   参数1  参数2


回复 使用道具 举报
嗯,知道了。谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马