Java 使用FileOutputStream复制文件,复制时找不到符号

Java 使用FileOutputStream复制文件,复制时找不到符号,java,input,output,Java,Input,Output,我尝试使用FileInputStream和FileOutputStream复制文件内容,代码如下: public class Example1App { public static void main(String[] args) { Example1 program= new Example1(); program.start(); } } 及 编译时,错误消息为: 找不到符号 program.start(); ^ 符号:方法开始() 位置:Example1类型的

我尝试使用FileInputStream和FileOutputStream复制文件内容,代码如下:

public class Example1App {
   public static void main(String[] args) {
    Example1 program= new Example1();
    program.start();
   }
}

编译时,错误消息为: 找不到符号 program.start(); ^ 符号:方法开始() 位置:Example1类型的变量程序 谁能帮我解释一下为什么会发生这种事?
非常感谢您提前提供的帮助。

之所以发生这种情况,是因为在名为
start
Example1
类中没有方法

您可能想做的是:

  • Example1
    类中创建
    start()
    方法
  • 更好的是,不要使用
    start()
    ,而是将方法命名为
    copy
    ,并为其指定参数:
    copy(字符串arg0,字符串arg1)
  • 因此,您将得到:

    import java.io.*;
    public class Example1 {
        public void copy(String inName, String outName) throws Exception {
           FileInputStream fin = new FileInputStream(inName);
           FileOutputStream fout = new FileOutputStream(outName);
           int c;
           while ((c = fin.read()) != -1)
           fout.write(c);
           fin.close();
           fout.close();
         }
    }
    
    以及:


    (实际上,您可以将这些方法组合到一个程序中—只需将
    main
    方法从Example1App移动到Example1App,然后删除Example1App)

    您正在调用一个不存在的方法,如消息所述。只需完全去掉第一个类,直接执行第二个类,使用“java Example1”。

    谢谢David!您能解释一下如何在Example1类中创建start方法吗?关于第二个选项,我编写了公共类Example1(String arg[0],args[1]){public static void main(String[]args)抛出异常{…但是编译时,错误是:错误:{预期的公共类Example1(String arg[0],args[1]))请参阅编辑后的答案。底线是,您已经得到了它。非常感谢David!这现在更有意义了。我将尝试新代码。现在它说:错误:未报告的异常异常;必须捕获或声明为抛出程序。复制(args[0],args[1]);我尝试将它们放入try and catch(异常e)块,它也不起作用。。
    import java.io.*;
    public class Example1 {
        public void copy(String inName, String outName) throws Exception {
           FileInputStream fin = new FileInputStream(inName);
           FileOutputStream fout = new FileOutputStream(outName);
           int c;
           while ((c = fin.read()) != -1)
           fout.write(c);
           fin.close();
           fout.close();
         }
    }
    
    public class Example1App {
       public static void main(String[] args) {
           Example1 program = new Example1();
           try {
             program.copy(args[0], args[1]);
           } catch (Exception e) {
             // Generally, you want to handle exceptions rather 
             // than print them, and you should handle some 
             // exceptions in copy() so you can close any open files.
             e.printStackTrace(); 
           }
       }
    }