[英]Write to resource file java?
我正在嘗試將數據動態寫入Java中的資源文件,但似乎無法成功。 有可能嗎? 我嘗試了幾種方法,但是都沒有用。
我有一個主要的方法代表:
public static void main(String[] args) throws Exception {
ClassLoader loader = ClassLoader.getSystemClassLoader();
File file = new File(loader.getResource("authors/authors.log").getFile());
FileWriter writer = new FileWriter(file);
System.out.println(file.getAbsolutePath());
writer.write("Test test \n");
writer.flush();
System.out.println(file.getAbsolutePath());
writer.write("Test 2");
writer.flush();
writer.close();
}
執行main方法后,不會引發異常,但是authors.log文件似乎沒有更改,也沒有寫入任何數據。
文件是:
src / main / java / main / Main.java
src / main / resource / authors / authors.log
目標/課程/作者/authors.log
但是,目標目錄包含一個authors.log
文件,所有數據都寫入那里。 我在某個地方錯了嗎,或者只是Java不允許寫入資源文件? 如果是這樣,最好的地方是存儲程序更改的文件(例如日志文件)的地方
但是,目標目錄包含一個authors.log文件,所有數據都寫入那里。
可以預料,因為它是您打開和修改的文件。
以下語句使用類加載器來檢索文件,而不是文件系統:
File file = new File(loader.getResource("authors/authors.log").getFile());
因此它將檢索位於target/classes
classs中的文件,而不是位於src/main/resources
。
通過指定當前工作目錄的相對路徑來使用文件系統,以便能夠更改src/main/resources
:
例如 :
File file = new File("src/main/resources/authors/authors.log");
或使用java.nio
API更好:
Path file = Paths.get("src/main/resources/authors/authors.log");
如果是這樣,最好的地方是存儲程序更改的文件(例如日志文件)的地方
除了技術問題之外,您應該想知道為什么您的應用程序需要修改源代碼。 僅應在非常特殊的情況下執行此操作。
例如,日志文件不必位於源代碼中,它們必須位於源代碼項目之外,因為它們不屬於應用程序源代碼,並且也不是構建應用程序的工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.