我一直在寻找这个,很多答案都出来了,但它不是我想要的解决方案,所以我来到这里试着向你们寻求帮助......
我想在JAR文件所在的同一文件夹中创建一个.txt
文件(dist文件夹)......
我尝试使用System.getProperty("user.dir")
它在Windows上运行并且使用netbeans时工作正常,创建的文件始终位于jar文件所在的文件夹中,但是当我在LINUX上运行它时,它将文件保存在root中...但是jar文件在桌面上的文件夹
当我使用终端打开jar文件时,它在同一文件夹中创建
private static String directory=System.getProperty("user.dir");
private final String sample=directory+File.separator+"sample.txt";
public void createFile()
{
File file=new File(sample);
try(FileWriter fw=new FileWriter(file))
{
fw.write("INSERT ME WHERE MY JAR IS");
fw.flush();
fw.close();
}catch(IOException ex)
{
ex.printStackTrace();
}
}
答案 0 :(得分:8)
您可以使用
参考您的工作目录File directory = new File(".")
您可以使用
访问其中的文件System.getProperty(directory.getCanonicalPath() + File.separator + "my.properties")
OR
System.getProperty("." + File.separator + "my.properties")
“。”指的是您当前的目录。使用File.separator
可确保在基于UNIX的文件系统中获取'/',在NTFS中使用“\”。
答案 1 :(得分:0)
有同样的问题:这些适用于 LINUX
当前目录的规范路径: directory.getCanonicalPath());
当前目录的绝对路径: directory.getAbsolutePath());
如果在Windows中有所不同,请尝试检查操作系统并运行代码: 喜欢
System.getProperty("os.name");
或者使用:
String absolutePath = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
absolutePath = absolutePath.substring(0, absolutePath.lastIndexOf("/"));