java - 在 Java 中使用 File.listFiles() 在 Linux 环境中列出项目目录中的文件

标签 java linux

String path = ".";
String files="";
File folder = new File(path);
File[] listOfFiles = folder.listFiles(); 

for (int i = 0; i < listOfFiles.length; i++) 
{
  if (listOfFiles[i].isFile()) 
  {
     files = listOfFiles[i].getName();
     System.out.println("files::::::::::::"+files);
  }
}

说上面的java文件我保存在路径D:/spike/FileList.java下。

在上面的代码中,如果我在 windows 平台 中运行,它将列出 'spike' 目录下的文件。

但是当我将它保存在 Linux 环境中时,说路径是 usr/local/apache/webapps/webtest/src/FileList.java

我得到的结果是根目录下的文件。

我需要的是在项目根目录下,也就是上面例子中的webtest目录下。

我怎样才能做到这一点。我的要求是我需要首先列出文件,然后从我需要读取的文件列表中读取 sample.properties 文件。

我知道我们可以对路径进行硬编码以获得相同的路径。但是如果不进行硬编码,我如何才能获得 webapps 项目根文件夹下的文件列表,即在我的例子中,在 webtest 文件夹下。

我也试过读取环境变量。但这里的问题是我的 apache 文件夹所有者是 spike 而不是 root。因此,当我执行 System.getenv() 时,我得到的只是用户 spike 设置的任何变量。

但是当我从所有者为 root 的任何其他文件夹执行 System.getenv() 时,我会得到完整的环境变量。

那么有没有什么方法可以通过使用上面的 java 代码片段而不对路径进行硬编码来获取项目根文件夹?

顺便说一句,这是一个部署在tomcat中的web应用程序。首先,应用程序将从 server.properties 文件中读取详细信息。但是我不应该在路径从系统更改到系统时对路径进行硬编码。所以我的意图是代码从项目起始文件夹中读取属性文件。

最佳答案

这不是真的,你的代码在 Linux 上 打印当前文件夹中的文件。 我刚刚试过了。

关于tomcat,看这里 What determines the current working directory of Tomcat Java process? 和/或在 Tomcat 站点上查找类似信息。

关于java - 在 Java 中使用 File.listFiles() 在 Linux 环境中列出项目目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495395/

相关文章:

Java提示

java - 在(使用 LWJGL 和 slick2D 的 java 游戏)中绘制字符串无法正常工作

java - 如何解决绝对路径未知的文件?

php echo 无法打印

linux - 多行 bash 脚本和 make 文件指令中评估的 bash 变量的串联

java - 有没有办法防止 bean 被 Spring Boot 覆盖?

java - 调试日志记录不适用于特定处理程序

java - 用于在 Linux 上创建 Java 守护程序服务的工具

linux - 无法通过在 ubuntu 13.10 上单击启动栏中的图标来启动 IntelliJ IDEA

java - 无限循环 : Java or Shell script