当前位置: 首页 > 知识库问答 >
问题:

在Java中传递文件路径作为参数

陆信瑞
2023-03-14

我一直在使用缓冲本地驱动器上的文件来解析和获取某些数据。出于测试目的,我可以很容易地这样做:

public static void main(String[] args) {

    fileReader fr = new fileReader();
    getList lists = new getList();


    File CP_file = new File("C:/Users/XYZ/workspace/Customer_Product_info.txt");
    int count = fr.fileSizeInLines(CP_file);
    System.out.println("Total number of lines in the file are: "+count);

    List<String> lines = fr.strReader(CP_file);

    ....

}

}

文件阅读器。java文件具有以下功能:

public List<String> strReader (File in)
{
    List<String> totLines = new ArrayList<String>();

    try
    {
        BufferedReader br = new BufferedReader(new FileReader(in));
        String line;
        while ((line = br.readLine()) != null)
        {
            totLines.add(line);
        }
        br.close();
    }
    catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    //String result = null;

    return totLines;
}

现在,我希望将文件路径作为命令行参数传递。我尝试了一些方法,但我对这方面还是有点陌生,没能成功。有人能帮我解释一下我需要做什么样的更改才能将这些更改合并到我的代码中吗。

共有3个答案

苏鸿志
2023-03-14

完整的答案是这样的:

下面的代码通过路径表示/etc/dir/fileName。文本

public static void main(String[] args) {
String path = args[0];
// ... 
File CP_file = new File(path);
// ... 

}

但是如果你想只给一个路径,从这个路径你的代码读取该目录包含的所有文件,你就需要上面的代码作为jar文件代码和bat文件/脚本导出:bat文件示例:

FOR %%i IN  (C:/user/dir/*.zip) do (java -cp application.jar;dependencies.jar;...;%%i)

运行脚本,代码将运行路径C:/user/dir/*上的文件。拉链

宋英杰
2023-03-14

您需要这样做:

public static void main(String[] args) {
    String path = args[0];
    // ... 
    File CP_file = new File(path);
    // ... 
}        
尚恩
2023-03-14

您的问题有两个方面:如何从命令行传递参数,以及如何在代码中读取参数。

所有用于实际Java类而不是JVM的参数都应该放在类名之后,如下所示:

C:\YOUR\WORKSPACE> java your.package.YouMainClass "C:\Users\XYZ\workspace\Customer_Product_info.txt"`

注意事项:

  • 斜杠/与反斜杠\:由于您使用的是Windows系统,因此我宁愿使用反斜杠作为路径,特别是在包含驱动器号的情况下。Java可以处理这两种变体,但最好遵循SO惯例

现在这个很简单:正如其他人所指出的,带有路径的字符串现在应该位于args[0]

public static void main(String[] args) {

    fileReader fr = new fileReader();
    getList lists = new getList();

    if (args[0] == null || args[0].trim().isEmpty()) {
        System.out.println("You need to specify a path!");
        return;
    } else {
        File CP_file = new File(args[0]);
        int count = fr.fileSizeInLines(CP_file);
        System.out.println("Total number of lines in the file are: "+count);

        List<String> lines = fr.strReader(CP_file);

        ....
    }
}

我添加了一些空检查,以避免遇到像ArrayIndexOutOfBound这样的问题。

 类似资料:
  • 我已经使用FastAPI创建了一个简单的API,我正在尝试将URL作为任意的<code>路径</code>参数传递给FastAPI路由。 当我测试它时,它不起作用并抛出错误。我以这种方式测试它:

  • 问题内容: 我正在尝试制作一个方法,该方法的参数为,等等,然后返回。 我将为该方法提供的所有可能的类均从该方法扩展并具有方法。 我的代码: 致电者: 但是,这根本不起作用。 请问我该怎么做? 问题答案: 我想你想做 希望像这样的东西行得通(我的反思能力真的不是那么好)。

  • 问题内容: 我试图编写一个程序来通过args读取文本文件,但是当我运行它时,它总是说找不到该文件,即使我将其放置在与我正在运行的main.java相同的文件夹中。有谁知道我的问题的解决方案或更好的阅读文本文件的方法? 问题答案: 请勿在中使用相对路径。 它将变成相对于当前工作目录的,这取决于您如何运行应用程序,而该方法又是无法从应用程序内部进行控制的。这只会导致可移植性麻烦。如果从Eclipse内

  • 问题内容: 我有一个界面: 和一个实现它的类 第三类实现了此方法: 现在我试图像这样调用该方法 但我不断得到一个例外说: 如果它连接了该类,该方法不起作用吗? 问题答案: 也许你需要

  • 对于下面的代码: 我有一个路由器路由到另一个路由器,看起来像这样: 处理程序如下所示: 我的问题是处理程序无权访问请求.params 中的campaign_uid。如何访问campaign_uid/传递给处理程序?

  • 下面的代码无法写入文件。 我编写了一个程序来执行cmd中的命令。这些命令只是执行jar文件中的java文件。这个jar中的java文件需要文件路径作为命令行参数。 注意:-jar文件也仅由我创建。