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

时间:2014-03-29 00:09:27

标签: java input output

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

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

import java.io.*;
public class Example1 {
    public static void main(String[] args) throws Exception {
       FileInputStream fin = new FileInputStream(args[0]);
       FileOutputStream fout = new FileOutputStream(args[1]);
       int c;
       while ((c = fin.read()) != -1)
       fout.write(c);
       fin.close();
       fout.close();
     }
   }

编译时,错误信息是: 找不到标志     program.start();            ^   符号:方法start()   location:Example1类型的变量程序 任何人都可以帮我解释为什么会这样吗? 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您的Example1类中没有名为start的方法。

您可能想要做的是:

  1. start()
  2. 中创建Example1方法
  3. 更好的是,不是start(),而是为方法copy命名并为其指定参数:copy(String arg0, String arg1)
  4. 所以,你会得到:

    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(); 
           }
       }
    }
    

    (实际上,你可以将它们合并到一个程序中 - 只需将main方法从Example1App移到Example1,然后删除Example1App)

答案 1 :(得分:0)

你正在调用一种不存在的方法,就像消息所说的那样。只需完全删除第一个类并使用'java Example1'直接执行第二个类。