将文件保存在当前目录中

时间:2014-10-08 07:08:49

标签: java io

我一直在寻找这个,很多答案都出来了,但它不是我想要的解决方案,所以我来到这里试着向你们寻求帮助......

我想在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();
    }
}

2 个答案:

答案 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("/"));