2014-10-08 169 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