我正在尝试编写一个复制文件的简单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
任何人都可以帮我解决此问题吗?
答案 0 :(得分:4)
代码正常运行。它没有为您提供源文件的位置。它为您提供运行程序的当前目录。
我相信您正在从IDE运行程序,因此本例中的当前目录是项目的根目录。
您可以通过调用new File("src").listFiles()
来列出项目src目录,但我认为您并不需要这样:当您编译和打包程序时,无论如何都不能使用源和源目录。
我认为如果您希望能够向您的用户显示某些目录结构,您的程序应该将根目录作为参数。例如,您应该将程序作为
运行 java -cp YOUR-CLASSPATH MyClass c:/root
因此,c:\root
下的所有文件都可用。
答案 1 :(得分:0)
而不是 文件文件=新文件(“。”); 使用绝对路径。您不能依赖特定目录中的用户启动程序。
如果您希望Netbeans从特定目录启动您的程序,您可以在Project Properties中指定目录作为工作目录 - &gt;运行