【问题标题】:Saving files in current directory [duplicate]将文件保存在当前目录中[重复]
【发布时间】:2014-12-02 18:25:07
【问题描述】:

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

我想在 JAR 文件所在的同一文件夹(dist 文件夹)中创建一个.txt 文件...

我尝试使用System.getProperty("user.dir"),当我在 Windows 上运行它并使用 netbeans 时它工作正常,创建的文件始终位于 jar 文件所在的同一文件夹中,但是当我在 LINUX 上运行它时,它会将文件保存在根目录中。 .但是桌面上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();
    }
}

【问题讨论】:

  • 已经这样做了,但是没用...

标签: java io


【解决方案1】:

有同样的问题:这些适用于 LINUX

当前目录的规范路径: directory.getCanonicalPath());

当前目录的绝对路径: directory.getAbsolutePath());

如果它在 Windows 中有所不同,请尝试检查操作系统并运行代码: 喜欢

System.getProperty("os.name");

否则使用:

String absolutePath = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
        absolutePath = absolutePath.substring(0, absolutePath.lastIndexOf("/"));

【讨论】:

  • 目录?先生,那是什么变量?抱歉,还是不习惯这些
  • 文件目录=新文件(".");您创建的文件
  • 看我的编辑你可以找到字符串中的绝对路径(在windows和linux中)
【解决方案2】:

你可以参考你的工作目录

File directory = new File(".")

您可以使用

访问其上的文件
System.getProperty(directory.getCanonicalPath() + File.separator + "my.properties")

或

System.getProperty("." + File.separator + "my.properties")

“。”指您当前的目录。使用File.separator 可确保您在基于 UNIX 的文件系统中获得“/”,在 NTFS 中获得“\”。

【讨论】:

  • 好的,我试试,这在 WINDOWS 和 LINUX 上都有效吗?
  • 是的,它对两者都有效...
  • 嗯,它返回一个空白
  • 返回空白什么?
  • 对不起,错误代码,但我做到了,它仍然在根目录中创建文件
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2023-04-02
  • 2011-07-05
  • 2013-12-23
相关资源
最近更新 更多