我有一个程序,可以使用Java将文件从服务器发送到客户端。该程序由两个主文件夹“服务器”和“客户端”组成,这些文件夹存储在主“ Project1”文件夹中。 “服务器”文件夹包含Server.class文件,“服务器文件”文件夹包含.txt文件。 “客户端”文件夹包含一个Client.class文件和一个“ ClinetFiles”文件夹,其中不包含任何内容(这是服务器将.txt文件发送到的位置)。 目前,我提供了两个文件夹的完整路径。
我的问题是我的路径应该是什么,以便程序可以在任何目录中工作。
我为客户端尝试了./Project1/Client 和 服务器的./Project1/Server/file.txt
但这些未被识别
答案 0 :(得分:3)
相对路径相对于程序的当前工作目录,默认情况下是执行启动Java命令的目录。也可以使用传递给java的-Duser.dir
参数来定义工作目录。
作为依赖工作目录的替代方法,可以设置包含顶级数据目录路径的系统属性或环境变量。然后在运行时读取此变量,并在访问数据目录中的文件时将其放在子路径之前。
答案 1 :(得分:0)
您应该只使用相对路径。不确定应该返回多少个文件夹,但是主意是File file = new File("..\\..\\..\\Client\\ClientFiles\\file.txt");
答案 2 :(得分:0)
一种可能的解决方案是使用Class对象的getResource方法获取路径的参考点。像这样:
import java.io.File;
import java.net.URL;
public class MyClass {
public static void main(String[] args) throws Exception {
File applicationRoot = getApplicationRootFile();
System.out.println(applicationRoot.getCanonicalPath());
}
private static File getApplicationRootFile() {
URL url = MyClass.class.getResource(".");
String path = url.getPath();
File file = new File(path + "../../");
return file;
}
}