获取正在运行的java文件的当前路径

时间:2012-02-05 10:23:12

标签: java directory

我正在尝试编写一个复制文件的简单tcp客户端/服务器应用程序。我希望服务器列出客户端可以复制的文件。到目前为止我的代码是:

import java.io.*;
public class GetFileList
{
    public static void main(String args[]) throws IOException{
        File file = new File(".");  
        File[] files = file.listFiles();  
        System.out.println("Current dir : " + file.getCanonicalPath());
        for (int fileInList = 0; fileInList < files.length; fileInList++)  
        {  
            System.out.println(files[fileInList].toString());  
        }
    }
}

输出:

Current dir : C:\Users\XXXXX\Documents\NetBeansProjects\Test
.\build
.\build.xml
.\manifest.mf
.\nbproject
.\src
.\UsersXXXXXDocumentsNetBeansProjectsTestsrcfile2.txt

我的问题是它给了我父目录而不是当前目录。我的GetFileList.java位于C:\Users\XXXXX\Documents\NetBeansProjects\Test\src,但显示C:\Users\Alick\Documents\NetBeansProjects\Test任何人都可以帮我解决此问题吗?

2 个答案:

答案 0 :(得分:4)

代码正常运行。它没有为您提供源文件的位置。它为您提供运行程序的当前目录。

我相信您正在从IDE运行程序,因此本例中的当前目录是项目的根目录。

您可以通过调用new File("src").listFiles()来列出项目src目录,但我认为您并不需要这样:当您编译和打包程序时,无论如何都不能使用源和源目录。

我认为如果您希望能够向您的用户显示某些目录结构,您的程序应该将根目录作为参数。例如,您应该将程序作为

运行

java -cp YOUR-CLASSPATH MyClass c:/root

因此,c:\root下的所有文件都可用。

答案 1 :(得分:0)

而不是 文件文件=新文件(“。”); 使用绝对路径。您不能依赖特定目录中的用户启动程序。

如果您希望Netbeans从特定目录启动您的程序,您可以在Project Properties中指定目录作为工作目录 - &gt;运行