从文件读取数据,文件名通过java中的Commandline参数传递

时间:2014-06-23 08:52:27

标签: java arrays

我有一个.txt文件,假设它命名为My。我需要读取这个文件内容。我通过命令行参数传递文件。我应该在命令提示符下将文件传递给args []数组。请帮助..............

3 个答案:

答案 0 :(得分:3)

您可以使用命令行参数获取文件名:

 java -jar myapp.jar abc.txt

 java a.b.c.MyApplication abc.txt

会将abc.txt放入args[0]

 public static void main(String[] args)

然后您可以打开文件并从Java代码中读取它。


如果您想要文件内容(而不是编写Java代码来阅读它们),您可以通过System.in获取它们:

 java -jar myapp.jar < abc.txt

(以上内容取决于您使用的shell和操作系统类型)

 InputStream data = System.in;

答案 1 :(得分:0)

有时很难知道从哪里开始,但这部分问题的答案已多次回答。但是,也许是为了帮助你,最好指出你正确的方向。

您想要的步骤是:

1)获取表示args数组中文件路径的String,可能类似于:

String filePath = args[0];

但是,您还需要检查args中是否有项目以防止在从args读取时出现异常的可能性(如果没有从命令行传递任何内容),例如:

String filePath;

if(args.length > 0){
    filePath = args[0];
}else{
 // do something  to handle the error, probably exit the program?
}

有关详细信息,请参阅此处:Link to java tutorial

2) 然后,您希望使用File构造函数从该字符串创建File对象。 Link to javadoc

File inputFile = new File(filePath);

3) 然后你需要逐行读取该文件。为此我会指出你的另一个答案,因为有很多方法可以做到这一点: Reading from a file - SO question

希望这有帮助。

答案 2 :(得分:0)

这是你可能想要的代码

    String path =arr[0];  //first approach
  /*Scanner in = new Scanner(System.in);
    System.out.println("Enter the path of the file..."); // whole block command second approac
    String path = in.nextLine(); */
    File file = new File(path);
  //apply your logic i just did some reading and writing to a file
  /*BufferedReader inputStream = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    PrintStream out = new PrintStream(new FileOutputStream("a.txt"));
    while(true)
    {
        String line = inputStream.readLine();
        if(line == null)
            break;
        else
            out.println(line);

    }
    */

如果您使用第一种方法运行程序

java className path_of_file

在第二种方法中,它会在运行时询问您的文件路径,然后您可以输入文件的路径。就像java className

一样运行