从用户定义的文件路径(Java)访问外部资源

从用户定义的文件路径(Java)访问外部资源,java,windows,file,exe,Java,Windows,File,Exe,我有一个Java程序,它存储/调用位于我的C驱动器中的大量.txt文件中的数据。目前,这些文件的路径已硬编码到我的Java程序中 我现在想发布这个软件,我想知道如何才能让用户在安装过程中指定一个文件位置,然后我可以将我的程序指向这个位置,而无需硬编码 这是相当标准的功能,但我一直在努力寻找如何实现它。我是否可以使用相对文件路径,例如,将java程序的.exe文件与.txt文件放在同一文件夹中,还是必须使用类似Windows注册表路径的文件 非常感谢你的帮助 干杯, Robin使用系统属性user

我有一个Java程序,它存储/调用位于我的C驱动器中的大量.txt文件中的数据。目前,这些文件的路径已硬编码到我的Java程序中

我现在想发布这个软件,我想知道如何才能让用户在安装过程中指定一个文件位置,然后我可以将我的程序指向这个位置,而无需硬编码

这是相当标准的功能,但我一直在努力寻找如何实现它。我是否可以使用相对文件路径,例如,将java程序的.exe文件与.txt文件放在同一文件夹中,还是必须使用类似Windows注册表路径的文件

非常感谢你的帮助

干杯,
Robin

使用系统属性user.home作为路径的根。现在安装的大多数东西都将此系统属性用作父目录和预定义文件夹。这样可以省去很多麻烦。将其与File.separator字符结合使用,以避免进一步的可移植性问题

我将为自己和用户省去麻烦。使用user.home+您的文件夹作为位置。默认情况下,大部分内容都存储在home目录中:maven、ssh、gradle、shell history。不需要以另一种方式旋转它谢谢你的回答,只是想澄清一下,这只是把它放在C:/Users/Person文件夹中,并将其固定为一个已知位置,它将始终安装在其中,对吗?因此,这本质上是一种更好的硬编码用户根位置的方法。构建路径时,请从父目录System.getPropertyuser.home开始。不要忘记也使用File.separator来避免\和/之间的冲突,谢谢您的澄清。我想问一下,这种方法是否比简单地将C:\程序文件编码到软件中更可取?当有人想在linux或OS X中使用你的东西时,你正在使用java,这是行不通的。你介意接受这个答案吗?