如何接收文件作为命令行参数?使用命令行参数将文件传递给程序
回答
只需将文件的路径传递,内部程序中使用的Java文件类来处理它
这需要第一个参数是文件路径:
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
}
}
}
,该main
方法接收一个String数组作为参数,你可能已经注意到了。你可以给参数args
提供另一个名字,但这是最常用的一个。
数组args
包含用户在启动程序时键入的内容值,类名后面的值。例如,要运行一个名为Foo类,用户必须键入:
[用户@桌面〜] $ java的富
一切类名被认为是用户类型后是一个参数。例如:
[用户@桌面〜] $ java的富酒吧巴兹
现在您的计划得到了两个参数:酒吧和巴兹。这些参数存储在数组args
中。作为常规的Java数组,第一个参数可以通过访问args[0]
来获取,第二个参数可以通过访问args[1]
等来获取。如果你试图访问一个无效的位置(当用户没有输入你所期望的),那么这个语句将会抛出一个ArrayIndexOutOfBoundsException
,就像它对任何数组都是一样。您可以检查使用args.length
键入的参数数量。
所以,回到你的问题。用户可以将文件名作为命令行参数通知,并且您可以通过main
方法的参数(通常称为args
)读取该值。你必须检查他是否真的输入了一些参数(检查数组的长度),如果没问题,你可以访问args[0]
来读取他输入的内容。那么您可以根据该字符串创建一个File
对象,然后执行您想要的操作。总是检查用户是否输入了您期望的参数数量,否则在访问数组时会遇到异常。
这里有一个如何使用命令行参数的完整例子:
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);
}
}
}
}
这个类将解析用户通知参数。如果他没有输入任何内容,课程将打印“没有提供参数”的消息。如果他通知任何数量的参数,这些参数将显示在屏幕上。所以,运行这个类的两个例子,我对这个答案,则输出将是:
[用户@桌面〜] $ java的富
没有参数分别给予。
[用户@桌面〜] $ java的富酒吧巴兹
酒吧
巴兹
在我看来,最好的做法是试图检测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;
}
}
我目前工作的一个类似的问题,这似乎做招。
- 1. 使用IDLE将命令行参数传递给Python程序?
- 2. Java:使用命令行参数将文件名传递给程序
- 3. 将命令行参数传递给应用程序
- 4. 将命令行参数从C#应用程序传递给IronPython?
- 5. 如何将命令行参数传递给MonoMac应用程序?
- 6. 如何将命令行参数传递给WinForms应用程序?
- 7. 将命令行参数传递给扑翼应用程序
- 8. 将命令行参数传递给OOB Silverlight 4应用程序
- 9. 如何将命令行参数传递给Meteor应用程序?
- 10. 将参数传递给winscp.com命令行
- 11. 将命令行参数传递给QPython
- 12. 将命令行参数传递给nightwatch.runner
- 13. 从命令行将参数传递给可执行文件
- 14. 如何从命令行将参数传递给golfscript程序
- 15. 如何通过Netbeans将命令行参数传递给程序?
- 16. 如何将命令行参数传递给MSI安装程序
- 17. 如何通过bash将参数传递给命令行程序?
- 18. 将命令行参数传递给使用Padre运行的Perl程序
- 19. 无法将命令行参数传递给批处理文件
- 20. 如何将命令行参数传递给PowerShell ps1文件
- 21. Maven TestNG项目,将命令行参数传递给testng.xml文件
- 22. 将命令行参数传递给perl通过文件?
- 23. 参数传递到命令行程序
- 24. 传递命令行java程序参数
- 25. 如何使用JNLP将命令行参数传递给应用程序?
- 26. 将命令行参数传递给使用堆栈的benhmark程序
- 27. 如何使用execlp将命令行参数传递给C程序
- 28. 将命令行参数传递给bash脚本命令
- 29. 将参数传递给命令模式
- 30. 将参数传递给sed命令
可以告诉我更多关于“arg [0]”的意思 我找不到阅读命令行主题的有用资源::((((( – Johanna 2009-06-28 17:36:50
)阅读“主要方法” http://java.sun.com/docs/books/tutorial/getStarted/application/index.html。它很好地描述了“args”是什么。该教程本身是找到许多你有问题 – 2009-06-28 17:41:19
@Johanna:args [0]正在访问位置为0的字符串数组args(数组的第一个元素),args作为参数传递给main(String [] args)方法,并且是一个包含传递给程序的命令行参数的字符串数组 – Sean 2009-06-28 17:42:27