我正在尝试编写一个复制文件的简单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任何人都可以帮我解决这个问题吗?
该代码工作正常。它不会为您提供源文件的位置。它为您提供程序运行的当前目录。
我相信您正在从 IDE 运行程序,因此本例中的当前目录是项目的根目录。
您可以通过调用列出您的项目 src 目录new File("src").listFiles(),但我认为您并不真正需要这个:当您编译和打包程序时,源和源目录无论如何都不可用。
我认为如果您希望能够向用户显示某些目录结构,您的程序应该将根目录作为参数。例如,您应该将程序运行为
java -cp YOUR-CLASSPATH MyClass c:/root
因此,下面的所有文件c:\root都将可用。