使用命令行参数将文件传递给程序

如何将文件作为命令行参数接收?

只传递文件的路径,在程序内部使用Java File类来处理它

这将第一个参数作为文件路径:

import java.io.File; public class SomeProgram { public static void main(String[] args) { if(args.length > 0) { File file = new File(args[0]); // Work with your 'file' object here } } } 

在Java中, main方法接收一个String数组作为参数,您可能已经注意到了。 您可以为参数args指定另一个名称,但这是最常用的名称。

数组args包含用户在启动程序时在类名后面键入的值。 例如,要运行名为Foo的类,用户必须键入:

[user @ desktop~] $ java Foo

用户在类名后键入的所有内容都被视为参数。 例如:

[user @ desktop~] $ java Foo bar baz

现在你的程序收到了两个参数: barbaz 。 那些参数存储在数组args 。 作为常规Java数组,可以通过访问args[0]来检索第一个参数,可以通过访问args[1]来检索第二个参数,依此类推。 如果您尝试访问无效位置(当用户没有键入您期望的内容时),该语句将抛出ArrayIndexOutOfBoundsException ,就像使用任何数组一样。 你可以检查用args.length输入的参数args.length

所以,回到你的问题。 用户可以将文件名作为命令行参数通知,您可以通过main方法的参数读取该值,通常称为args 。 你必须检查他是否真的输入了一些参数(检查数组长度),如果没关系,你可以访问args[0]来读取他输入的内容。 然后,您可以基于该字符串创建一个File对象,并执行您想要对其执行的操作。 总是检查用户是否输入了您期望的参数数量,否则在访问arrays时会出现exception。

这是一个如何使用命令行参数的完整示例:

 public class Foo { public static void main(String[] args) { if (args.length == 0) { System.out.println("no arguments were given."); } else { for (String a : args) { System.out.println(a); } } } } 

该类将解析用户通知的参数。 如果他没有输入任何内容,该课程将打印出“没有给出任何论据”的信息。 如果他通知任意数量的参数,那么这些参数将显示在屏幕上。 所以,使用我在这个答案中给出的两个例子来运行这个类,输出将是:

[user @ desktop~] $ java Foo
没有给出任何论据。
[user @ desktop~] $ java Foo bar baz
酒吧
巴兹

在我看来,如果没有提供参数,最好的做法是尝试检测args == 0并返回有关如何使用程序的帮助命令列表。

我看到了其他一些解决方案,但我认为如果你这样做,它们将不起作用。 例如,提供C:\Program Files\file.dat作为命令行参数。 然后它将无法工作,因为您在创建新文件时只采用args[0]

所以你应该做以下的事情,加入给定参数的所有部分,然后从中创建一个文件:

 import java.io.File; public class SomeProgram { public static void main(String[] args) { String current = ""; File lastFile = null; for(String str : args){ File newFile = new File((current + " " + str).trim()); if(newFile.exists()){ lastFile = newFile; } current += " " + str; } File yourFile = lastFile; } } 

我目前正在研究类似的问题,这似乎可以解决问题。