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

Dan*_*Dan 6 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());  
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Current dir : C:\Users\XXXXX\Documents\NetBeansProjects\Test
.\build
.\build.xml
.\manifest.mf
.\nbproject
.\src
.\UsersXXXXXDocumentsNetBeansProjectsTestsrcfile2.txt
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*exR 4

该代码工作正常。它不会为您提供源文件的位置。它为您提供程序运行的当前目录。

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

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

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

java -cp YOUR-CLASSPATH MyClass c:/root

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