2012-06-04 35 views
0

我正在從Java jar可執行文件寫入文本文件。該jar生成正確的文件,但文件的權限設置爲root,因此我的其他Javascript無法讀取該文件。當我嘗試通過ajax讀取文件時,它返回「權限被拒絕」。如何在Java中創建文件時解決問題?我目前正在運行Java 1.6。Linux從java jar寫入文件

我在eclipse中運行應用程序時沒有這個問題。一旦我移植到jar權限更改爲根訪問。

我運行的罐子

exec('java -jar writeToFile.jar'); 

的書面文件是標準

public void writeContents(String fp,String contents){ 
    try{ 
     BufferedWriter write = new BufferedWriter(new FileWriter(fp)); 
     write.write(contents); 
     write.close(); 
    }catch(Exception e){ 
     System.out.println("Failed to write to file " + fp + " error: " + e.toString()); 
     e.printStackTrace(); 
    } 
} 

寫文件工作正常,它會創建該文件的正確目錄,並將所需的數據,僅在eclipse中運行它並通過jar運行它之間的差異是文件權限。該jar將該文件設置爲root。

+0

盲目的猜測是您的WebServer無權訪問此文件。或者是由java代碼保存的文件沒有關閉它的鎖。向我們展示一些代碼,或者更好地創建[SSCE](http://sscce.org/)。 – npe

+0

你用什麼用戶來運行你的jar?它是運行網絡服務器的同一個用戶嗎? – dstarh

+0

是的,它和web用戶運行在 –

回答

-1

我不確定,但用Files類可以在文件中讀寫屬性。可能是您的操作系統必須設置一些特定屬性。

如果你想操縱它,還有一個setOwner方法。