当前位置: 首页 > 面试题库 >

如何将文本文件作为参数传递?

子车心思
2023-03-14
问题内容

我试图编写一个程序来通过args读取文本文件,但是当我运行它时,它总是说找不到该文件,即使我将其放置在与我正在运行的main.java相同的文件夹中。有谁知道我的问题的解决方案或更好的阅读文本文件的方法?


问题答案:

请勿在中使用相对路径java.io.File

它将变成相对于当前工作目录的,这取决于您如何运行应用程序,而该方法又是无法从应用程序内部进行控制的。这只会导致可移植性麻烦。如果从Eclipse内部运行,则该路径将相对于/path/to/eclipse/workspace/projectname。如果从命令控制台内部运行它,它将相对于
当前
打开的文件夹(即使您按绝对路径运行代码!)。如果通过双击JAR来运行它,它将相对于JAR的根文件夹。如果您在网络服务器上运行它,它将相对于/path/to/webserver/binaries。Etcetera。

始终在中使用绝对路径java.io.File,没有任何借口。

为了获得最佳的可移植性并减少绝对路径的麻烦,只需将文件放在运行时类路径覆盖的路径中(或将其路径添加到运行时类路径中)。这样,您可以通过来获取文件Class#getResource()或通过来获取文件的内容Class#getResourceAsStream()。如果它与当前类位于同一文件夹(包)中,则它已经在类路径中。要访问它,只需执行以下操作:

public MyClass() {
    URL url = getClass().getResource("filename.txt");
    File file = new File(url.getPath());
    InputStream input = new FileInputStream(file);
    // ...
}

要么

public MyClass() {
    InputStream input = getClass().getResourceAsStream("filename.txt");
    // ...
}


 类似资料:
  • 问题内容: 我有一个txt文件,其中包含一个字符串,我希望能够在我的一个脚本中使用此字符串,所以我想知道是否有一种方法可以将文件内容设置为构建属性之一或可以在脚本中使用的参数,应该与使用构建环境属性之一相同。例如:$ {JOB_NAME},它保存着作业名称,因此,我想以相同的方式访问其中保存着某些值的文件的内容。可能吗? 问题答案: 您可以通过作业的 File 参数将文件从计算机上载到工作区。 您

  • 问题内容: 我有一个带有nvarchar参数的存储过程。我希望调用者在使用此SP时提供sql命令的文本。 如何从SP中执行提供的sql命令? 这有可能吗?- 我认为可以使用EXEC进行操作,但需要注意以下几点: 错误,表明它无法通过给定名称找到存储过程。由于它是脚本,因此这显然是准确的,但让我认为它无法按预期工作。 问题答案: 使用: …假设参数是一个完整的SQL查询。如果不: 注意SQL注入攻击

  • 我在主文件中声明了一张地图。我有另一个文件测试,我想通过我的映射。下面是我的main.tsx文件 下面是我的test.tsx文件的代码 我想显示我传递的地图的大小作为参数,但我不能这样做。我该如何解决这个问题呢?

  • 我有一个方法在资源类,上传文件。它调用一个方法,该方法将文件作为参数,然后将文件分成几个部分,然后将这些部分写入磁盘。 我想知道如何为它编写客户机测试,假设可以在不使用@FormDataParam InputStream的情况下上载文件。因为我觉得在这种情况下我不需要它。 我已经看到了很多使用Jersey上传文件的例子,这些文件以@FormDataParam的形式接收InputStream和For

  • 问题内容: 我读了很多文章,尝试了很多事情,但仍然无法通过xsl在参数中找到值。我从java的sun xalan开始,但是从来没有运行过,所以我改用saxon无济于事。我想将两个xml文档与xls合并为一个。永远不要在文件系统上,这是用于构建xml字符串/ docs的Web应用程序。我尝试将DTMAxisIterator,DomSource,Doc传递给以xsl,字符串设置的Node。在带有xsl

  • 问题内容: 我在Jenkins的命令行中使用字符串参数触发构建: 我现在想从命令行触发使用文件作为文件参数的构建。 例如,如果我的项目构建了main.c,那么我希望能够触发构建并从命令行上传main.c。 这可能吗? 问题答案: 在“ Jenkins远程访问 API”页面中对此进行了描述: 请注意,您需要使用URL / build代替/ buildWithParameters