2009-06-28 98 views

回答

26

只需将文件的路径传递,内部程序中使用的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 
     } 
    } 
} 
+0

可以告诉我更多关于“arg [0]”的意思 我找不到阅读命令行主题的有用资源::((((( – Johanna 2009-06-28 17:36:50

+0

)阅读“主要方法” http://java.sun.com/docs/books/tutorial/getStarted/application/index.html。它很好地描述了“args”是什么。该教程本身是找到许多你有问题 – 2009-06-28 17:41:19

+0

@Johanna:args [0]正在访问位置为0的字符串数组args(数组的第一个元素),args作为参数传递给main(String [] args)方法,并且是一个包含传递给程序的命令行参数的字符串数组 – Sean 2009-06-28 17:42:27

7
在Java中

,该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的富酒吧巴兹
酒吧
巴兹

2

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

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

我目前工作的一个类似的问题,这似乎做招。

相关问题