簡體   English   中英

寫入資源文件Java?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM