2014-10-08 168 views
0

我一直在寻找这个,许多答案出来了,但它只是不是我寻找的解决方案,所以我来到这里,试图帮助你们...将文件保存到当前目录

我想创建一个.txt文件在JAR文件的位置(DIST文件夹)的文件夹...

我尝试使用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(); 
    } 
} 
+0

已经做到了,但它没有工作... – 2014-10-08 07:19:03

回答

7

你可以参考你的工作目录与

File directory = new File(".") 

,你可以把它用

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

OR

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

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

+0

然后我就试试吧,做这项工作都在Windows和Linux? – 2014-10-08 07:21:11

+0

是的,它对两者都有效... – travega 2014-10-08 07:22:27

+0

嗯它返回一个空白 – 2014-10-08 07:26:56

0

曾有同样的问题:这会为工作LINUX

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

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

如果变化在Windows尝试检查操作系统并运行代码: Like

System.getProperty("os.name"); 

或者使用:

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

目录?那是一个可变的先生?对不起,还没有习惯所有这些 – 2014-10-08 07:31:06

+0

文件目录=新文件(“。”);你创建的文件 – 2014-10-08 07:35:21

+0

看我编辑你可以找到字符串的绝对路径(无论是在Windows和Linux) – 2014-10-08 07:38:27