传递命令行参数以在Java中复制文件名

时间:2013-03-11 02:26:33

标签: java file-io command-line-arguments

是否可以从IDE(例如NetBeans或Eclipse)编写一个程序,该程序可以从命令行编译并在用户输入两个参数后立即运行,以便运行java类程序的名称?

如果是这样,绝对路径可以作为参数之一传递吗?

如果是这样,(如果源文件或目标文件有多字描述符,如Big Sky File.txt),如何将其作为参数传递?

我知道这是一个很多问题,但我已经搜索过高低,而且似乎没有任何东西可以在任何这些主题上划线。

@ Code-Guru,@ thkala,这是我正在尝试的代码(需要一些格式化):

编辑:@ Code-Guru,我添加了违规行(不知道我是怎么错过的)。

下一个编辑:@ Code-Guru,这是CopyFile.java中更新的文件内容,以及生成的错误消息:

import java.io.*;

public class CopyFile
{
 public static void main(String args[]) throws IOException, NullPointerException
{ 
int num; 
FileInputStream fileIn; 
FileOutputStream fileOut; 
try
{ 
  // open input file 
  try
  { 
    fileIn = new FileInputStream(args[0]); 
  }

  catch(FileNotFoundException e)
  { 
  System.out.println("Input File Not Found."); 
  return; 
  }

  // open output file 
  try
  { 
    fileOut = new FileOutputStream(args[1]); 
  }

  catch(FileNotFoundException e)
  { 
    System.out.println("Error Opening Output File.");
    return;
  }

}

catch(ArrayIndexOutOfBoundsException e)
{
  System.out.println("Incorrect argument use:java CopyFile Source Destination"); 
  return;
} 

// Copy File 
try
{ 
  do
  {
    num = fileIn.read();
    if(num != -1)
    {
      fileOut.write(num);
    }
  }

  while(num != -1); 
}

catch(IOException e)
{
  System.out.println("File Error: Could not copy file."); 
}
fileIn.close();
fileOut.close();
}
}

以下是我从命令提示符处收到的错误消息:

  

错误:无法找到或加载主类CopyFile

2 个答案:

答案 0 :(得分:2)

  

是否可以从IDE(例如NetBeans或Eclipse)编写一个程序,该程序可以从命令行编译并在用户输入两个参数后立即运行,以便运行java类程序的名称?

是的,这是可能的。

  

如果是这样,绝对路径可以作为参数之一传递吗?

绝对 - any string can be passed as an argument,只要其大小不超过某个(通常是系统定义的)限制。

  

如果是这样,(如果源文件或目标文件有多字描述符,如Big Sky File.txt),如何将其作为参数传递?

通常,带有空格的参数,特殊字符e.t.c.由调用shell处理,而不是Java程序。请参阅您的文档,了解如何在您使用的任何命令行shell中正确引用此类参数。

答案 1 :(得分:1)

答案在于错误信息的这一部分:

(wrong name: copyfile/CopyFile)

即,您班级的完全限定名称为copyfile.CopyFile。 Java要求包布局与磁盘上的文件夹布局匹配,以便它知道如何查找。

因此,您的类文件必须位于名为copyfile的子文件夹中,然后调用为java copyfile.CopyFile,或者您可以通过删除package copyfile;声明在未命名的默认包中编译您的类从代码(你没有显示该行,但它必须在那里)。

更多信息:http://www.jarticles.com/package/package_eng.html