Java 如何在不知道完整文件路径的情况下访问文件?
我有一个程序,用java将文件从服务器发送到客户端。该程序由两个主文件夹“服务器”和“客户端”组成。这些文件夹存储在主“项目1”文件夹中。“Server”文件夹包含Server.class文件和“ServerFiles”文件夹,后者包含.txt文件。 “Client”文件夹包含一个Client.class文件和一个不包含任何内容的“ClinetFiles”文件夹(服务器将.txt文件发送到该文件夹)。 目前,我提供了两个文件夹的完整路径 我的问题是我的路径应该是什么,这样程序就可以在任何目录中工作 我为客户尝试了./Project1/Client 及 服务器的/Project1/Server/file.txtJava 如何在不知道完整文件路径的情况下访问文件?,java,Java,我有一个程序,用java将文件从服务器发送到客户端。该程序由两个主文件夹“服务器”和“客户端”组成。这些文件夹存储在主“项目1”文件夹中。“Server”文件夹包含Server.class文件和“ServerFiles”文件夹,后者包含.txt文件。 “Client”文件夹包含一个Client.class文件和一个不包含任何内容的“ClinetFiles”文件夹(服务器将.txt文件发送到该文件夹)。 目前,我提供了两个文件夹的完整路径 我的问题是我的路径应该是什么,这样程序就可以在任何目录中工
但是这些是无法识别的您应该只使用相对路径。不确定应该返回多少文件夹,但想法是
File File=new File(“..\\\\\\\Client\\ClientFiles\\File.txt”)代码>
注意:取自相对路径相对于程序的当前工作目录,默认情况下,该目录是执行启动java命令的目录。还可以使用传递给java的-Duser.dir
参数定义工作目录
作为依赖工作目录的替代方法,您可以设置包含顶级数据目录路径的系统属性或环境变量。然后在运行时读取此变量,并在访问数据目录中的文件时将其前置到子路径。一种可能的解决方案是使用类对象的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;
}
}
相关:请注意:看起来OP使用的是基于其/
路径的unix操作系统。对于unix,这是相同的,只是“\\”应该更改为“/”,您可以在开始时始终检查操作系统类型,然后使用适当的路径。如果您将cd
设置为或将user.dir
设置为C:/Users/Documents/Projects/Project1/testing/filepost
,那么在代码中使用的相对路径将是client/clientFiles/test.txt
。